Wie würden Sie Instanzreferenzen an eine neue Aufgabe senden/weitergeben?C# - UI-Referenz an Task.Factory.StartNew() senden?
Sagen wir, ich habe dies:
public BlockingCollection<string> blockingCollection = new BlockingCollection<string>();
textBox_txt.Text = "Result: ";
public Task t = Task.Factory.StartNew(() =>
{
foreach (string value in *???1*.blockingCollection.GetConsumingEnumerable())
{
*???1*.blockingCollection.Take()
[...bla...]
*???2*.Invoke(new updateTextBox_txtCallback(*???2*.updatetextBox_txt)
, new object[] { "THE RESULT!\r\n" });
}
});
ich, dass irgendwo raten bin hier StartNew(() =>
Ich habe die Hinweise auf die blockingContent und zum textBox passieren. Ich habe mich umgesehen, konnte aber die Syntax nicht herausfinden. (es ist ziemlich haarig)
Hilfe, bitte.
[Bearbeiten] Also, wenn ich ein statisches Objekt von der Aufgabe aufrufen, funktioniert es offensichtlich; aber ich brauche die Aufgabe, um mit Instanzen zu arbeiten; nämlich die blockingCollection und die updateTextBox_txtCallback Invoke.
Ich weiß für eine Tatsache (getestet), dass eine Möglichkeit, die UI von einem anderen Thread (wie einem BgWorker) zu aktualisieren ist, Invoke und eine Callback-Funktion zu verwenden ; was ich getan habe * 2 *. Invoke (new updateTextBox_txtCallback (* ??? 2 *. updatetextBox_txt), neues Objekt [] {"DAS ERGEBNIS! \ r \ n"}; 'Wenn es ein BgWorker wäre, das * 2 wäre durch "dieses" ersetzt worden. aber in meinem aktuellen Fall brauche ich die Instanzreferenz des Hauptthreads. – Spectraljump
@Twodordan: bearbeitet meine Antwort auf das Problem zu zeigen – BrokenGlass
Ich sah, und Sie vorübergehend "meinen Arsch gerettet"; Wie jetzt kann ich weiterschreiben, während ich auf eine Antwort warte. Vielen Dank! – Spectraljump