AsyncCallback auslösen aber wie???

22/05/2010 - 21:59 von Ingo Manthey | Report spam
Hallo NG,

ich möchte Daten asynchron Laden und nach Beendigung möchte den den
Hauptthread mitteilen das ich fertig bin.
Ich denke dazu ist der AsyncCallback am besten zu nutzen.

Ich habe hier mal ein kleines Beispiel meines Programm aufgezeigt.
In main erstelle ich den AsyncCallback und rufe meine Methode auf, welche
den Thread startet.
Wie löse ich un den AsyncCallback aus damit der Delegate DataLoaded
aufgerufen wird??

main
{
AsyncCallback callBack = new AsyncCallback(DataLoaded);
LoadProtokollAsync(Path, DataSet, callback)
}
private void LoadProtokollAsync(string fileName, DsProtokoll dataset,
AsyncCallback callBack )
{
while (isLoadingAsync)
{ Thread.Sleep(500);
}
isLoadingAsync = true;
fileNameAsync = fileName;
dsAsync = dataset;

Thread newThread = new Thread(DoLoadProtokoll);
newThread.IsBackground = true;
newThread.Start();
}
private void DoLoadProtokoll()
{
try
{
if (File.Exists(fileNameAsync))
dsAsync.ReadXml(fileNameAsync);
}

finally
{
isLoadingAsync = false;
}
}
 

Lesen sie die antworten

#1 Marvin Massih
23/05/2010 - 01:42 | Warnen spam
Hallo Ingo,

Ingo Manthey schrieb:
ich möchte Daten asynchron Laden und nach Beendigung möchte den den
Hauptthread mitteilen das ich fertig bin.
Ich denke dazu ist der AsyncCallback am besten zu nutzen.



Warum denn so kompliziert?

Nimm doch einfach einen BackgroundWorker mit RunWorkerCompleted-Ereignis:

[Übersicht über die BackgroundWorker-Komponente]
http://msdn.microsoft.com/de-de/lib...80%29.aspx

Du kannst Ein- und Ausgabedaten sogar bequem herein
(BackgroundWorker.RunWorkerAsync/DoWorkEventArgs.Argument)und heraus
reichen (DoWorkEventArgs.Result/RunWorkerCompletedEventArgs.Result):

[BackgroundWorker.DoWork-Ereignis]
http://msdn.microsoft.com/de-de/lib...80%29.aspx

isLoadingAsync = false;



Wenn Du so einen Weg wirklich gehen willst (wie gesagt, BackgroundWorker
halte ich für den besseren Weg), solltest Du daran denken,
isLoadingAsync als volatile zu deklarieren.

Viele Grüße

Marvin

Marvin Massih | http://www.marvin-massih.de

Ähnliche fragen