Ich habe 4 Windows-Formulare und sie verwenden eine Methode der anderen Form. Diese Methode muss nur von einem der Formulare verarbeitet werden. Wenn ein Thread diese Methode verwenden möchte, muss er sicher sein, dass die Methode zu diesem Zeitpunkt nicht von anderen Threads aufgerufen wird.Aufruf von Methoden aus verschiedenen Threads
Ich habe eine Lösung wie die
bool methodIsBusy = false;
void Method()
{
methodIsBusy = true;
//do method things
//done method things
methodIsBusy = false;
}
und verwenden methodIsBusy zu wissen, dass das Verfahren durch einen Faden belegt ist oder nicht. Gibt es kreativere Lösungen für dieses Problem? Vielen Dank.
Wenn Sie Methoden von Formularen aus anderen Threads als dem UI-Thread aufrufen, ist es fast garantiert, dass Sie etwas falsch machen. Das wird nicht gut enden. Überdenken Sie, was Sie tun. – xxbbcc
Warum? Ich erstelle 4 Formen aus einer Hauptform, durch Instatiation. Warum kann ich Main-Threads-Methoden nicht in neuen Formularen verwenden? Was kann ein Problem verursachen? –
@MehmetErkol Das Problem ist nicht Aufruf der Methoden eines anderen Formulars, es ruft sie * aus einem Nicht-UI-Thread *. Sie sollten eine solche Methode immer nur über den UI-Thread * aufrufen. Da alle Aufrufe im UI-Thread enthalten sind, wissen Sie bereits, dass sie nicht gleichzeitig ausgeführt werden. – Servy