【问题标题】:Not able to use Delegate and other functions无法使用 Delegate 和其他功能
【发布时间】:2013-11-14 02:19:11
【问题描述】:

我正在使用委托调用方法,目标函数在完成后调用回调。但是我确实想等到它的回调被调用,以便我可以获取数据。

例如:

//setup 

public IAsyncResult BeginGetTies(Request request, AsyncCallback cb, object asyncState)
{
     _service.GetTiesCompleted += Callback;
    _gets = new getTimeSeriesData(GetTies);

    IAsyncResult r = _gets.BeginInvoke(request, cb, asyncState);

    return r;
}

private void GetTies(Request request)
{
    _service.GetTies(tsr, id);
}

private void Callback(object sender, event e)
{
    // this gets called after EndGet 
}

现在这个_service.GetTies 使用带有事件的回调。但是,当_service.GetTies 调用完成时,我会重新获得控制权。之后调用回调。我想等到回调被调用,以便我可以使用结果。

请帮忙。

【问题讨论】:

  • 您使用的是什么版本的 .NET?
  • 有趣。所以你想要回调而不是异步方面?为什么不直接调用函数呢?
  • 我想两者都用。问题是,一旦 GetTies 完成,就会调用 EndGet,但数据来自 Callback。如果我不能解决这个问题,那么我将使用同步模型,但我确实想找到解决这个问题的方法。

标签: c# .net asynchronous callback delegates


【解决方案1】:

使用WaitHandles 应该会得到你想要的结果。

IAsyncResult result1 = Method.BeginInvoke(10, MyCallback, null)
result1.AsyncWaitHandle.WaitOne();  // blocks until finished

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多