gpt4 book ai didi

c# - 如何让线程休眠直到收到异步函数的回调?

转载 作者:太空狗 更新时间:2023-10-29 18:04:49 26 4
gpt4 key购买 nike

我有一个函数,只有在从异步函数接收到回调时才需要执行。

喜欢

我调用异步函数 Stop(),然后不久我调用异步函数 Start()

收到 Stop CallBack 之前的问题 Start() 被调用,因此我遇到了问题。我也不能将两个函数的调用分开,就像我不能这样做一样。:

public void SomeFunction()
{
Stop();
}

public void Stop_CallBack(eventargs e)
{
Start();
}

我必须这样做:

public void SomeFunction()
{

Stop();
//Do something;

Start();
}

但在我收到 Stop 回调之前,我的 start() 函数已执行,因此给我带来了问题。

谁能帮我解决这个问题。

最佳答案

这是您想要使用等待句柄的时候。以下是展示一种方法的简短代码示例:

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();
}

}

关于c# - 如何让线程休眠直到收到异步函数的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6306168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com