Zastavenie a znovu spustenie BackGroundWorker – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zastavenie a znovu spustenie BackGroundWorker – .NET – Fórum – Programujte.comZastavenie a znovu spustenie BackGroundWorker – .NET – Fórum – Programujte.com

 

Tayson0
Stálý člen
19. 6. 2013   #1
-
0
-

Zdravim

Riesim BackRoundWorker a spusta sa mi jednym tlacidlom no tym istym tlacidlom si ho aj zastavim cez CancellationPending a potom worker.CancelAsync() .... ak si ho chcem opätovne spustit tak dam worker.RunWorkerAsync() ....problem je ale v tom ze ak ho zastavim v inej udalosti napr. inom tlacidle cez worker.CancelAsync() a potom ho chcem znova spustit worker.RunWorkerAsync() tak mi zahlasi ze je zaneprazdneny.... neviem ako to zastavit aby nebol zaneprazdneny.

Nahlásit jako SPAM
IP: 158.193.83.–
zlz
~ Anonymní uživatel
634 příspěvků
19. 6. 2013   #2
-
0
-

Pokud to hlásí, že je zaneprázdněný, tak možná opravdu bude zaneprázdněný. Ukaž kód.

Nahlásit jako SPAM
IP: 80.188.216.–
velurex0
Stálý člen
19. 6. 2013   #3
-
0
-

Myslím že nelze spouštět RunWorkerAsync víc než jednou. Musíš k tomu celému problému přistoupit jinak např. využít AutoResetEvent.

viz. google.

Nahlásit jako SPAM
IP: 46.167.210.–
Tayson0
Stálý člen
20. 6. 2013   #4
-
0
-

#3 velurex
Ten RunWorkerAsyc ide praveze spustat viac krat pretoze na tlacidle ked stlacim mam spustenie workra a dalsim tlacidlom zastavim a tak to mozem robit dookola...... no ked si dam nachvilku ho zastavit vykonat nejake operacie a hned spustit ked je to pod sebou tak to nejde 

Nahlásit jako SPAM
IP: 85.237.239.–
Tayson0
Stálý člen
20. 6. 2013   #5
-
0
-

#3 velurex
private void enterCommand(object sender, KeyPressEventArgs e)

        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter))
            {

                worker.CancelAsync();
                string Ip = textIp.Text;
                int RemotePort = int.Parse(textRp.Text);
                IPEndPoint RemoteEndPoint = new IPEndPoint(IPAddress.Parse(Ip), RemotePort);
                int line = textSend.GetLineFromCharIndex(textSend.SelectionStart);
                string command = textSend.Lines[line];

                client.Close();

                client = new UdpClient(RemotePort);


                byte[] SendBytes = Encoding.ASCII.GetBytes(command + "\r\n");
                client.Send(SendBytes, SendBytes.Length, RemoteEndPoint);


                e.Handled = true;

               worker.RunWorkerAsync();
              
            }

No potrebujem aby sa prerusilo prijimanie dat cez UDP na zaciatku cize tam mam worker.CancelAsync() a potrebujem aby som odoslal byte a znovu zacal prijimanie cez UDP a na konci mam worker.RunWorkerAsync() ale proste pise ze je zaneprazdneny.

Nahlásit jako SPAM
IP: 85.237.239.–
zlz
~ Anonymní uživatel
634 příspěvků
20. 6. 2013   #6
-
0
-

V DoWork asi hlídáš CancelationPending a případně práci ukončíš. Pokud ne, tak je ten worker samozřejmě pořád zaneprázdněný. Pokud ano, tak asi chvíli trvá, než na ten požadavek zareaguješ a worker je po tu dobu taky pořád zaneprázdněný.

no ked si dam nachvilku ho zastavit vykonat nejake operacie a hned spustit ked je to pod sebou tak to nejde

Takže co tě na tom překvapuje?

Nahlásit jako SPAM
IP: 78.156.159.–
Tayson0
Stálý člen
20. 6. 2013   #7
-
0
-

#6 zlz
No dal som tam aj casovač teda Thread.Sleep() a cakal som kym dobehne ale nic z toho .... prisiel som na to ze chyba asi bude v tom ze nemozem v jedenj udalosti ho zastaviť a potom, hned spustiť

Nahlásit jako SPAM
IP: 158.193.83.–
JardaJirava0
Stálý člen
20. 6. 2013   #8
-
0
-

Ahoj,

to, ze zavolas CancelAsync da jen prikaz k tomu, ze bys mel zastavit zpracovani v DoWork, kde bys mel kontrolovat promennou CancellationPending a spravne tak reagovat.

Je tedy mozne, ze preruseni se neprovede a znovu odpaleni tak vyhodi vyjimku, protoze BW neni koncipovan na provadeni vice jak jedne operace najednou.

Otazkou je, zda pro tento typ ulohy je BW vhodnym kandidatem.

Pekny den,

Nahlásit jako SPAM
IP: 77.78.85.–
MCAD, MCPD
http://jirava.net/blog
http://xaml.cz - Magazín moderních technologií založených na XAML
Tayson
~ Anonymní uživatel
179 příspěvků
21. 6. 2013   #9
-
0
-

#8 JardaJirava
No chcel som to spravit cez Thread ale problem bol v odosielani z vedlajsieho vlakna do hlavneho udajov .... chcel som vslatne aktualizovat text box no nevedel som ako som to mal spravit ....lebo v podstate sa dva vlakna v tu istu chvilu chceli vyuzit textbox ... je na to nejaka finta ?

Nahlásit jako SPAM
IP: 213.81.131.–
velurex0
Stálý člen
21. 6. 2013   #10
-
0
-
Nahlásit jako SPAM
IP: 46.167.210.–
Mutagen0
Super člen
23. 6. 2013   #11
-
0
-

A nebo místo threadu použít přímo async fci

private async void fce()

{

          await Task.Delay(100);

}

Nahlásit jako SPAM
IP: 89.190.90.–
JardaJirava0
Stálý člen
25. 6. 2013   #12
-
0
-

Ahoj,

použít konstrukci async void někde jinde než jako koncovou metodu v obsluze UI se silně nedoporučuje. Použij raději async Task pokud už se rozhodneš pro async/await.

Pěkný den,

Nahlásit jako SPAM
IP: 77.78.85.–
MCAD, MCPD
http://jirava.net/blog
http://xaml.cz - Magazín moderních technologií založených na XAML
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 22 hostů

Podobná vlákna

BackGroundWorker zastavenie — založil Tayson

BackgroundWorker C# — založil plasmo

BackgroundWorker blokuje UI — založil ondrej39

C# backgroundWorker Cancel — založil Roman

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý