Ich versuche ein Formular zu erstellen, das etwas animiert, während es eine bestimmte Aufgabe verarbeitet (übergeben als Delegaten an den Konstruktor). Es funktioniert gut, aber das Problem, das ich habe, ist, dass ich keine Kopie meiner generischen Klasse instanziieren kann, wenn die bestimmte Methode, die ich ausführen möchte, einen Rückgabetyp von void hat.
Ich verstehe, dass dies so vorgesehen ist, aber ich frage mich, ob es eine bekannte Lösung für Situationen wie diese gibt.
Wenn es hilfreich ist, sieht mein Windows-Formular so aus (aus Gründen der Kürze gekürzt):
public partial class operatingWindow : Form
{
public delegate T Operation();
private Operation m_Operation;
private T m_ReturnValue;
public T ValueReturned { get { return m_ReturnValue; } }
public operatingWindow(Operation operation) { /*...*/ }
}
Und ich rufe es so auf:
operatingWindow processing = new operatingWindow(new operatingWindow.Operation(this.doStuff));
processing.ShowDialog();
// ...
private int doStuff()
{
Thread.Sleep(3000);
return 0;
}