Kann ich einen Thread auf einen Maus-Event-Handler setzen?
Calls_Calls.MouseUp += new MouseEventHandler(Calls_Calls_MouseUp);
Wie füge ich einen Thread darüber hinzu?
Kann ich einen Thread auf einen Maus-Event-Handler setzen?
Calls_Calls.MouseUp += new MouseEventHandler(Calls_Calls_MouseUp);
Wie füge ich einen Thread darüber hinzu?
Ich würde den Ereignisbehandler auf die gleiche Weise einrichten, aber in der Methode Calls_Calls_MouseUp
können Sie einen Thread starten, um die Arbeit zu erledigen:
private void Calls_Calls_MouseUp(object sender, MouseEventArgs e)
{
ThreadPool.QueueUserWorkItem(state => {
// hier die Arbeit erledigen
});
}
Normalerweise versuche ich jedoch, meine Ereignisbehandler so unempfindlich wie möglich zu halten und rufe einfach eine andere Methode auf, oft basierend auf einer Bedingung:
private void Calls_Calls_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
DoSomething();
}
}
private void DoSomething()
{
ThreadPool.QueueUserWorkItem(state => {
// hier die Arbeit erledigen
});
}
Dies gibt Ihnen die Möglichkeit, das genau gleiche Verhalten nicht nur vom MouseUp
-Ereignis auf einem bestimmten Steuerelement auszulösen (damit Sie das gleiche Verhalten auf einem Menüpunkt, einem Symbolleistenbutton und möglicherweise einem normalen Befehlsbutton haben können). Es öffnet auch die Möglichkeit, Unittests für die Funktionalität durchzuführen (obwohl dies mit asynchronem Code etwas kniffliger ist).
Sie können auch BackgroundWorker verwenden, falls Sie eine Aktualisierung auf der Benutzeroberfläche für Fortschritt und Abschluss benötigen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.