2009-06-10 6 views
1

Ich weiß, das ist eine ziemlich breite Frage, aber habe eine Klasse, die eine Methode zum Anzeigen eines Bildes hat und möchte diese Methode verwenden in einem anderen Stück Code, um das Bild zu öffnen, aber nicht, dass dieser Methodenaufruf blockiert wird.C# Anzeigen eines Bildes in einem Formular, das den Rest meines Codes nicht blockiert

Also, wenn ich habe die folgenden Schnipsel irgendwo in einem Stück Code:

ImageClass MyImage = new ImageClass(); 
MyImage.DisplayImage(@"C:\SomeImage.jpg"); 
Console.Writeline("This is the line after displaying the image"); 

Ich mag im Grunde das Bild anzuzeigen, und dann gehen Sie auf die Console.WriteLine. Muss ich dafür einen neuen Thread oder Prozess erstellen? Danke im Voraus.

Antwort

3

Ja, Sie müssen zusätzliche Threads verwenden. Ich bin mit GDI nicht so vertraut, aber möglicherweise müssen Sie den Nicht-UI-Code in einem separaten Thread ausführen, damit der UI-Code im Hauptthread der Benutzeroberfläche ausgeführt werden kann. Etwas wie folgt aus:

ImageClass MyImage = new ImageClass(); 
MyImage.DisplayImage(@"C:\SomeImage.jpg"); 
ThreadPool.QueueUserWorkItem(new WaitCallback(new delegate(object o) { 
    Console.Writeline("This is the line after displaying the image"); 
})); 
0

Ja, Erstellen eines neuen Threads und Aufruf von MyImage.DisplayImage (@ "C: \ SomeImage.jpg"); in diesem Thread ist der beste Weg, es zu tun.

0

PictureBox.LoadAsync() lädt w/o blockiert.