|
You last visited: Today at 23:06
Advertisement
Backgroundworker mehrere Parameter
Discussion on Backgroundworker mehrere Parameter within the .NET Languages forum part of the Coders Den category.
06/02/2013, 20:00
|
#1
|
elite*gold: 4
Join Date: Dec 2010
Posts: 4,733
Received Thanks: 3,870
|
Backgroundworker mehrere Parameter
Hallo Leute,
ich hänge grade verzweifelt an einem Problem fest.
Ich habe einen Backgroundworker in mein Tool implementiert, nun soll der eine Schleife durchlaufen. In dieser Schleife müsste er auf zwei Textboxen zugreifen, jedoch geht das ja nicht, da es in einem anderen Thread läuft.
Ich habe etliche Möglichkeiten gelesen/versucht doch keine will klappen. Man kann leider nur in der Zeile ein Argument einfügen, wenn ich zwei Argumente mit einem "&" verbinde, klappt es auch nicht.
Code:
BackgroundWorker1.RunWorkerAsync()
Hoffe mir kann hier jemand helfen.
|
|
|
06/02/2013, 20:28
|
#2
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Es gibt doch die Events vom Backgroundworker, auf die du vom GUI-Thread reagieren kannst. Ich hab schon ewig nichtmehr mit .NET gearbeitet und weiß gerade auch garnicht, wie diese Events heißen, aber msdn wird dir da sicherlich helfen.
|
|
|
06/02/2013, 20:37
|
#3
|
elite*gold: 4
Join Date: Dec 2010
Posts: 4,733
Received Thanks: 3,870
|
Das ProgressChanged Sub, aber das ist ja ein extra Sub, nicht wie das "DoWork" Sub, somit kann ich ja darauf nicht zugreifen ._.
|
|
|
06/02/2013, 20:49
|
#4
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Du emittierst das Event in der DoWork-"Sub" und packst dein Zeug für die GUI in ProgressChanged rein. Dem Event kannst du sicherlich auch noch ein Parameter übergeben. Das kann dann je nach Komplexität ein einfacher Wert sein oder ein Objekt, welches alle Informationen für die GUI besitzt.
|
|
|
06/02/2013, 21:01
|
#5
|
elite*gold: 1
Join Date: Jan 2013
Posts: 372
Received Thanks: 99
|
Versuch es mit Delegate und Invoke
|
|
|
06/02/2013, 21:03
|
#6
|
elite*gold: 4
Join Date: Dec 2010
Posts: 4,733
Received Thanks: 3,870
|
Also ich probier es mal so zu erklären:
Code:
Private Sub btn_start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_start.Click
BackgroundWorker1.RunWorkerAsync()
End Sub
Code:
Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
For Each line In IO.File.ReadLines(TextBox1.Text) ' <- Wert wird nicht aus dem GUI genommen.
End Sub
Und das Problem dann mit der 2. Textbox, es funktioniert einfach nicht, wenn ich den BGW Starte, kommt direkt die Finishmeldung...
|
|
|
06/02/2013, 21:28
|
#7
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Les den Inhalt der Textbox im GUI-Thread aus und lass den Worker dann mit den Daten arbeiten.
|
|
|
06/02/2013, 21:33
|
#8
|
elite*gold: 4
Join Date: Dec 2010
Posts: 4,733
Received Thanks: 3,870
|
Quote:
Originally Posted by Schlüsselbein
Les den Inhalt der Textbox im GUI-Thread aus und lass den Worker dann mit den Daten arbeiten.
|
Und wie soll das denn funktionieren? Der Gui-Thread ist der "ProgressChanged-Sub" wie soll der denn vor dem "DoWork-Sub" ausgeführt werden?
Quote:
Originally Posted by reCougar
Versuch es mit Delegate und Invoke
|
Hast du vielleicht ein Beispiel für mich oder ein Tut?
|
|
|
06/02/2013, 21:52
|
#9
|
elite*gold: 1
Join Date: Jan 2013
Posts: 372
Received Thanks: 99
|
Quote:
Originally Posted by Wurzelhüpfer
Und wie soll das denn funktionieren? Der Gui-Thread ist der "ProgressChanged-Sub" wie soll der denn vor dem "DoWork-Sub" ausgeführt werden?
Hast du vielleicht ein Beispiel für mich oder ein Tut?
|
Google ist dein Freund
|
|
|
06/02/2013, 22:21
|
#10
|
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
|
Das dürfte sein was du suchst, musst die Daten dem Thread halt mitgeben.
|
|
|
06/02/2013, 23:08
|
#11
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Quote:
|
Und wie soll das denn funktionieren? Der Gui-Thread ist der "ProgressChanged-Sub" wie soll der denn vor dem "DoWork-Sub" ausgeführt werden?
|
Du startest den bgw ja irgendwie aus dem GUI Thread heraus. Les die Daten ein und starte dann den Thread.
|
|
|
 |
Similar Threads
|
[Help]Parameter
11/30/2012 - Flyff Private Server - 2 Replies
kann mir wer vlt eben helfen?
diese resdata.inc einträge
APP_MPLAYER "mp3.tga" 0 400 100 0x410000 21
{
IDS_RESDATA_VN_000001 // Title String
}
{
IDS_RESDATA_VN_000002 // Help Key
|
parameter
06/14/2012 - Flyff Private Server - 1 Replies
Hallo Andre sagt wenn ich alles von chaos in sod files mache mussman paramter ändern ich wieß aber nicht wo man dass macht
|
Parameter
12/11/2010 - AutoIt - 5 Replies
wie mache ich ein parameter in autoit?
|
C# Keysend und Backgroundworker
03/08/2010 - .NET Languages - 3 Replies
Hi hab da ein Problem.
Kann es sein das der Befehl SendKeys innerhalb eines Backroundworkers nicht ausgeführt werden kann bzw der Befehl nicht an das aktive fenster sondern an den mainthread geschickt werden????
Bzw hat jemand eine Lösung wie man das umgehen kann das SendKeys an das richtige Fenster die Tastenanschläge schick???
EDIT:
Der Code der dananch ausgeführt werden soll wird auch nicht ausgeführt.
while (Run1.Break == false)
|
Backgroundworker Daten von Form holen
11/15/2007 - General Coding - 4 Replies
Nabend allerseits,
ich arbeite im Moment an einer Scriptengine, die schon beinah fertig ist. Ich möchte, dass die Scriptinterpretation in einem 2. Backgroundthread abläuft. Soweit so gut, klappt alles bis auf das Problem, dass ich nicht weiss, wie ein zweiter Thread Daten von der Form holen kann ( Es wird diese typische Exception geworfen). Wäre nett, wenn mir das einer halbwegs idiotensicher darlegen könnte, da ich erst seit einer Woche intensiv in C# programmiere und der Text der Helpfile...
|
All times are GMT +1. The time now is 23:07.
|
|