läuft Ich möchte jemand von Ihnen fragen, wenn Sie diese Art von Szenario versucht haben. Ich habe eine Windows-Anwendung in C# entwickelt. Im Hauptprogramm (Program.cs) habe ich einen Thread-Mutex hinzugefügt, nur um viele Operationen auszuführen, die unter ihm ausgeführt werden.System.Windows.Forms Timer funktioniert nicht, wenn ein Thread auf Haupt
//under Program.cs
public static FormOneInstance frmOneInstance;
static void Main()
{
t = new Thread(new ThreadStart(CreateInputOutput));
t.Start();
}
public static void CreateInputOutput()
{
try
{
mutex.WaitOne();
ExecuteManyOperationsHere();
}
finally
{
mutex.ReleaseMutex();
Thread.CurrentThread.Abort(); //Has ThreadAbortException here
t = null;
}
}
public static void ExecuteManyOperationsHere()
{
frmOneInstance =new FormOneInstance(); //this has lot of execution on formLoad that includes ShowSummary()
}
Und auf meiner anderen Formular FormOneInstance Klasse, habe ich System.Windows.Forms Timer
private void timer1_Tick(object sender, EventArgs e)
{
ShowSummary();
}
Jetzt will ich den Faden in Haupt- und UI trennen. Danke!
Sie benötigen Nachrichtenschleife für diesen Timer ... Beachten Sie, dass es wirklich unklar ist, warum Sie diesen Timer für Konsolenanwendung holen ... und welcher Code mit ' mutex.WaitOne sollte darstellen. Es kann eine gute Idee sein, [MCVE] Anleitung zu lesen, um die Frage zu verbessern. –
Dies ist keine Konsolenanwendung. Warum wird eine Nachrichtenschleife benötigt? – Juran
Mutexe sind ein Synchronisationsmechanismus für zwei oder mehr Threads, um gleichzeitig auf eine freigegebene Ressource zuzugreifen. Ich sehe nicht, dass der Mutex von mehr als einem Thread verwendet wird und ich sehe nicht, welche Ressource synchronisiert wird. Wenn timer1_Tick verwendet wird, um den Fortschritt/die Ergebnisse des anderen Threads anzuzeigen, ist es wahrscheinlich nicht so einfach. Kennen Sie Hintergrundarbeiter? – user34660