gpt4 book ai didi

c# - 等到委托(delegate)被调用

转载 作者:行者123 更新时间:2023-11-30 15:08:58 25 4
gpt4 key购买 nike

我有一个带有 StartProcessing() 方法的异步类,它在完成处理后引发一个 int ResultReady() 事件。 StartProcessing() 只需要很少的时间。

我想同步调用这个类。我的伪代码应该是这样的:

  1. 调用 StartProcessing()

  2. 等待/ sleep 直到结果准备好

  3. 返回结果

什么设计模式最适合这个?你能给我指一个代码示例吗?

最佳答案

一个简单的方法是使用 ManualResetEvent事件处理程序和等待代码都可以访问它。调用Set来自事件处理程序,以及 WaitOne (或超时重载)来自等待线程。请注意,这不能在 STA 线程上完成,因此您不能在 WinForms 线程(应该始终是 STA)中执行它 - 但无论如何您都不应该在 UI 线程中等待。

像这样:

var async = new AsyncClass();
var manualEvent = new ManualResetEvent();
async.ResultReady += args => manualEvent.Set();
async.StartProcessing();
manualEvent.WaitOne();

关于c# - 等到委托(delegate)被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4989626/

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