How to Sleep a thread until callback for asynchronous function is received?(如何让线程休眠,直到收到异步函数的回调?)
问题描述
我有一个函数,只有在从异步函数接收到回调时才需要执行.
I have a function that needs to be executed only when a callback is received from asynchronous function.
喜欢
我调用异步函数 Stop()
之后不久我调用异步函数 Start()
.
I call asynchronous function Stop()
and soon after that I call asynchronous function Start()
.
收到停止回调之前的问题 Start()
被调用,因此我遇到了问题.我也不能分开调用两个函数就像我不能这样做.:
The Issue before Stop CallBack is received Start()
is called and thus I am getting issues. Also I can not separate the calling of two functions Like I can not do this.:
public void SomeFunction()
{
Stop();
}
public void Stop_CallBack(eventargs e)
{
Start();
}
我必须这样做:
public void SomeFunction()
{
Stop();
//Do something;
Start();
}
但在我收到 Stop 回调之前,我的 start() 函数被执行,从而给我带来了问题.
but before I receive Stop call back my start() function is executed thus creating the problems for me.
谁能帮我解决这个问题.
Can anyone help me out how can I solve this issue.
推荐答案
这是你想要使用等待句柄的时候.下面是一个简短的代码示例来展示一种方法:
This is when you want to use wait handles. Here is a short code sample to show one approach:
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();
}
}
这篇关于如何让线程休眠,直到收到异步函数的回调?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何让线程休眠,直到收到异步函数的回调?


基础教程推荐
- JSON.NET 中基于属性的类型解析 2022-01-01
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
- 全局 ASAX - 获取服务器名称 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01