Sum*_*mit 8 c# multithreading synchronization callback
我有一个只有在从异步函数收到回调时才需要执行的函数.
喜欢
我调用异步函数Stop(),不久之后我调用异步函数Start().
收到Stop StopBack之前的问题Start()被调用,因此我遇到了问题.另外,我无法分开两个函数的调用,就像我不能这样做:
public void SomeFunction()
{
Stop();
}
public void Stop_CallBack(eventargs e)
{
Start();
}
Run Code Online (Sandbox Code Playgroud)
我必须这样做:
public void SomeFunction()
{
Stop();
//Do something;
Start();
}
Run Code Online (Sandbox Code Playgroud)
但是在我收到停止回叫之前,我的start()函数被执行,从而为我创造了问题.
任何人都可以帮助我如何解决这个问题.
Fre*_*örk 21
这是您想要使用等待句柄的时候.这是一个显示一种方法的简短代码示例:
class AsyncDemo
{
AutoResetEvent stopWaitHandle = new AutoResetEvent(false);
public void SomeFunction()
{
Stop();
stopWaitHandle.WaitOne(); // wait for callback
Start();
}
private void Start()
{
// do something
}
private void Stop()
{
// This task simulates an asynchronous call that will invoke
// Stop_Callback upon completion. In real code you will probably
// have something like this instead:
//
// someObject.DoSomethingAsync("input", Stop_Callback);
//
new Task(() =>
{
Thread.Sleep(500);
Stop_Callback(); // invoke the callback
}).Start();
}
private void Stop_Callback()
{
// signal the wait handle
stopWaitHandle.Set();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19057 次 |
| 最近记录: |