首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CountdownEvent中使用WaitHandle

在CountdownEvent中使用WaitHandle
EN

Stack Overflow用户
提问于 2017-12-05 18:27:00
回答 1查看 126关注 0票数 0

我有一个简单的应用程序来演示CountdownEvent。这很好,但是我想以某种方式设置CountDownEventWaitHandle并使用它。有可能吗?如何做到这一点呢?我想我应该注册WaitHandle并将其传递给CountDownEvent

代码语言:javascript
复制
public static CountdownEvent _countDwn = new CountdownEvent(3);

static void Main(string[] args)
{
    new Thread(say).Start("hello 1");
    new Thread(say).Start("hello 2");
    new Thread(say).Start("hello 3");
    _countDwn.Wait();

    Console.WriteLine("done");
    Console.ReadLine();   
}    

public static void Go(object data, bool timedOut)
{
    Console.WriteLine("Started - " + data);
    // Perform task...
}

public static void say(Object o)
{
    Thread.Sleep(4000);
    Console.WriteLine(o);
    _countDwn.Signal(); 
}

更新

我想用ManualResetEvent得到类似于示例的东西。无阻塞wait()

代码语言:javascript
复制
static ManualResetEvent _starter = new ManualResetEvent (false);

public static void Main()
{
  RegisteredWaitHandle reg = ThreadPool.RegisterWaitForSingleObject
                             (_starter, Go, "Some Data", -1, true);
  Thread.Sleep (5000);
  Console.WriteLine ("Signaling worker...");
  _starter.Set();
  Console.ReadLine();
  reg.Unregister (_starter);    // Clean up when we’re done.
}

public static void Go (object data, bool timedOut)
{
  Console.WriteLine ("Started - " + data);
  // Perform task...
}
EN

回答 1

Stack Overflow用户

发布于 2017-12-05 20:48:12

您可以使用与ManualResetEvent相同的方法

代码语言:javascript
复制
 RegisteredWaitHandle reg = ThreadPool.RegisterWaitForSingleObject
                         (_countDwn.WaitHandle, Go, "Some Data", -1, true);
 /// ...

 reg.Unregister(_countDwn.WaitHandle);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47651316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档