C# 发生新事件时如何停止旧事件

C# 发生新事件时如何停止旧事件,c#,events,C#,Events,我有两个按钮点击事件 void Button1_click(...) { //Do somethings Foo(); } void Button2_Click(...) { //Do somethings Foo(); } 函数Foo()需要1分钟以上才能完成 当我点击按钮1,然后点击按钮2。如何在Button1\u click中停止Foo(),并在Button2\u click上仅运行Foo()。您应该在单独的线程上运行Foo,并在完成更新后在ui线程上调

我有两个按钮点击事件

void Button1_click(...)
{
    //Do somethings
    Foo();
}

void Button2_Click(...)
{
    //Do somethings
    Foo();
}
函数Foo()需要1分钟以上才能完成


当我点击按钮1,然后点击按钮2。如何在Button1\u click中停止Foo(),并在Button2\u click上仅运行Foo()。

您应该在单独的线程上运行Foo,并在完成更新后在ui线程上调用update,以及使用取消令牌随时停止给定的操作。这里有类似的帖子

首先,你不应该在UI线程中运行一分钟长的操作;如果这样做,您将无法单击其他按钮。您需要异步地完成这项工作,但我需要能够在运行时更新列表视图项。我该怎么做呢?这取决于非UI操作是什么,以及如何使其异步。有很多方法可以从非UI线程调度UI工作,不同的方法在不同的上下文中效果最好;你问的是如何修复尝试的解决方案,而不是如何解决根本问题本身。@shotgunnija是的,我只想知道如何修复或如何通过任何方式来解决。我从StepanKobzey那里得到了答案。:)