基于事件的编程,如何响应发送请求的实例

时间:2014-05-10 11:10:55

标签: c# events asynchronous delegates

我有一个执行长时间运行的功能。我的应用程序的许多表单/类都可以访问该函数。当操作完成时,它调用一个事件,许多不同形式的实例被绑定到该事件。

如何避免事件调用绑定到它的所有函数。我想在调用函数时从客户端表单传递一些变量/ UUID,然后可以用它来仅调用类/表单的特定实例。

该函数有多个线程运行。

class MyClass: IMyInterface
{
    public event ObjectReceivedDelegate PriceResponse;
    MyClass()
    {
    }
    public void GetPrice(List<string> symbols)
    {
        //Call a long running function from a service in a background thread
    }
    void GetPricesAsync_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        PriceResponse(e.Result);
    }
}

1 个答案:

答案 0 :(得分:1)

您可以将Action传递给您的函数。喜欢

void SomeFunc(Action a)
{
  // your code
  a.Invoke();
}