gpt4 book ai didi

c# - 是否可以同步调用异步调用?

转载 作者:行者123 更新时间:2023-11-30 14:02:37 30 4
gpt4 key购买 nike

我在下面放置了一些非常基本的代码来说明我正在尝试做的事情。我有执行异步操作的“DoSomethingAshnc”方法。我希望“DoSomething”方法是一个不接受操作参数并返回 int 的同步方法。

public void DoSomething(Action<int> actionToPerformOnComplete)
{
DoSomethingAsync(delegate(int val)
{
actionToPerformOnComplete(val);
});
}

是否有可能让“DoSomething”返回一个整数,就好像该方法是同步发生的一样?

最佳答案

您需要在同步方法的末尾添加一些内容,告诉它等待其他调用完成。我假设您的异步方法将有一个事件来告诉调用者它何时完成。

如果是这样,那么我建议使用类似 ManualResetEvent 的东西,在同步线程中等待它,然后在异步线程的 Finish 事件接收器中设置它。

例子:

public void DoSomething(Action<int> actionToPerformOnComplete)
{
ManualResetEvent mre = new ManualResetEvent(false);
DoSomethingAsync(delegate(int val)
{
try
{
actionToPerformOnComplete(val);
}
finally
{
mre.Set();
}
});
mre.WaitOne();
}

关于c# - 是否可以同步调用异步调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540669/

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