Jump to content
gastao

progressbar marquee

Recommended Posts

gastao

tou a usar uma progressbar marcada como marquee assim que o programa arranca ele ja esta a andar de um lado pro outro assim que carrego no botao que tem o seguinte codigo e vai me fazer o restante codigo parece que o programa fica parado sem responder...

alguem consegue dar uma dica?

ProgressBar1.Style = ProgressBarStyle.Marquee
	ProgressBar1.MarqueeAnimationSpeed = 150
... restante codigo

Edited by gastao

Share this post


Link to post
Share on other sites
thoga31

O que mais me interessava ver para tentar entender na totalidade esse bloqueio foi exactamente aquilo que tu ocultaste - o "restante código".


Knowledge is free!

Share this post


Link to post
Share on other sites
gastao

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
progressbar1.style = progressbarstyle.marquee
progressbar1.marqueeanimationspeed = 150

Dim strIniFile As String = My.Application.Info.DirectoryPath & "\config.ini"
	'Le qual o caminho das Facturas escrito no Ini
	Dim bdsql As String = GetIniSetting("CaminhoBaseDados", "InformaVendas", strIniFile)
	Dim bdnome As String = GetIniSetting("NomeBaseDados", "InformaVendas", strIniFile)
	Dim bduser As String = GetIniSetting("User", "InformaVendas", strIniFile)
	Dim bdpass As String = GetIniSetting("Password", "InformaVendas", strIniFile)
	Dim Caminho As String = GetIniSetting("Caminho", "InformaVendas", strIniFile)
	Dim TipoMovimento As String = GetIniSetting("TipoMovimento", "InformaVendas", strIniFile)
	Dim Narmazem As String = GetIniSetting("Narmazem", "InformaVendas", strIniFile)
	Dim localizaçao As String = GetIniSetting("localizaçao", "InformaVendas", strIniFile)
	Dim mailrecebe As String = GetIniSetting("mailrecebe", "InformaVendas", strIniFile)
	Dim datenow As String = DateTime.Now
	Dim sqlpass As String = bdpass
	sqlpass = AES_Decrypt(sqlpass, "somepassword")
	'conexao SQL
	connetionString = "Data Source='" & bdsql & "';Initial Catalog='" & bdnome & "'; Integrated Security=false; User Id='" & bduser & "';Password='" & sqlpass & "';"
	Dim myConnection As New SqlConnection(connetionString)
	Dim myCommand As New SqlCommand("SELECT '" & TipoMovimento & "' as TipoMovimento, SaleTransactionDetails.ItemID, SaleTransactionDetails.Quantity*1000 As Quantidade, SaleTransactionDetails.TaxIncludedPrice*1000 as PVP, '" & DateTime.Now.ToString("yyyyMMdd") & "' as Data, '" & Narmazem & "' As Armazem FROm SaleTransactionDetails INNER JOIN Item ON SaleTransactionDetails.ItemID = Item.ItemID WHERE SaleTransactionDetails.DtAlt = '" & DateTime.Now.ToString("yyyy-MM-dd") & "' and item.familyid='40' or item.familyid='41' or item.familyid='42' or item.familyid='43' or item.familyid='44' or item.familyid='45' or item.familyid='46' or item.familyid ='47' or item.familyid='48' or item.familyid='16' or item.familyid = '60' or item.familyid = '49' ", myConnection)
	myConnection.Open()
	Dim myReader As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
	'query	
	Dim sb As New StringBuilder
	While myReader.Read()
		''Let's read line by line and Append it to our StringBuilder
		sb.AppendLine(
			   String.Format("{0};{1};{2};{3};{4};{5}",
					   myReader.Item("TipoMovimento"), myReader.Item("ItemID"), myReader.Item("Quantidade"), myReader.Item("PVP"), myReader.Item("data"), myReader.Item("Armazem")))
	End While
	''Now that we have all data in our StringBuilder, lets put into our file
	File.WriteAllText("" & Caminho & "" & DateTime.Now.ToString("yyyyMMdd") & "Export_Sage_PHC.txt", sb.ToString)
	AutoCloseMsgBox("Foi Exportado o ficheiro com sucesso", "InformaVendas", 4)
	'Enviar email com attach das vendas
	Dim SmtpServer As New SmtpClient()
	Dim mail As New MailMessage()

o programa corre sem problema nenhum mas parece que fica bloqueado em vez de a barra andar ali de um lado pro outro, isto era apenas para ficar visualmente bonito e nao parecer que o programa tava parado ja q tava la a progressbar

Edited by gastao

Share this post


Link to post
Share on other sites
thoga31

Não sei até que ponto esses processos "bloqueiam" o programa, mas não é surpreendente.

Mete esse processo a decorrer num BackgroundWorker, assim a thread principal não bloqueia.


Knowledge is free!

Share this post


Link to post
Share on other sites
gastao

agora em portugues lol o que queres dizer com backgroundworker? nunca trab com isso.. consegues exempleficar me algo sff

e que sempre que faço uma progressbar parece que o programa tfica parado mas esta a correr em vez de a barrinha ficar ali a mastigar enquanto o programa corre apenas para ficar bonito ;)

Share this post


Link to post
Share on other sites
thoga31

Isso acontece porque o processo é contínuo e exige recursos. Um BackgroundWorker cria-te como que uma thread secundária onde o processo decorre, deixando a thread-mãe "em paz". Podes dar um report de evolução do processo de modo a que isso seja informado na thread-mãe com uma ProgressBar, por exemplo.

http://wiki.portugal-a-programar.pt/dev_net:vb.net:backgroundworkers


Knowledge is free!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.