您现在的位置是:主页 > news > 长春网站制作哪里好/想要推广网页正式版

长春网站制作哪里好/想要推广网页正式版

admin2025/4/27 11:29:43news

简介长春网站制作哪里好,想要推广网页正式版,pc端和移动端的网站,wordpress禁止草稿除了Set 和 WaitOne方法外,在类WaitHandle中还有一些用来创建复杂的同步过程的静态方法。WaitAny, WaitAll 和 SignalAndWait使跨多个可能为不同类型的等待句柄变得容易。 SignalAndWait可能是最有用的了:他在某个WaitHandle上调用WaitOne&am…

长春网站制作哪里好,想要推广网页正式版,pc端和移动端的网站,wordpress禁止草稿除了Set 和 WaitOne方法外,在类WaitHandle中还有一些用来创建复杂的同步过程的静态方法。WaitAny, WaitAll 和 SignalAndWait使跨多个可能为不同类型的等待句柄变得容易。 SignalAndWait可能是最有用的了:他在某个WaitHandle上调用WaitOne&am…

除了Set 和 WaitOne方法外,在类WaitHandle中还有一些用来创建复杂的同步过程的静态方法。

WaitAny, WaitAll 和 SignalAndWait使跨多个可能为不同类型的等待句柄变得容易。 SignalAndWait可能是最有用的了:他在某个WaitHandle上调用WaitOne,并在另一个WaitHandle上自动地调 用Set。 你可以在一对EventWaitHandle上装配两个线程,而让它们在某个时间点“相遇” 第一个线程像这样: WaitHandle.SignalAndWait (wh1, wh2); 同时第二个线程做相反的事情:WaitHandle.SignalAndWait (wh2, wh1);

WaitHandle.WaitAny等待一组等待句柄任意一个发出信号,WaitHandle.WaitAll等待所有给定的句柄发出信号。与票据 旋转门的例子类似,这些方法可能同时地等待所有的旋转门——通过在第一个打开的时候(WaitAny情况下),或者等待直到 它们所有的都打开(WaitAll情况下)。

private AutoResetEvent event_ImageCaptureCmp = new AutoResetEvent(false); //图像采集完成事件

private AutoResetEvent event_SoftTriggerCmp = new AutoResetEvent(false); //软件触发后,获取图片完成,防止两次触发,图像被覆盖

private AutoResetEvent event_TestComplete = new AutoResetEvent(false); //一个测试流程所有图片都处理完成

WaitHandle [] waitHandle = new WaitHandle[]{event_ImageCaptureCmp,

event_SoftTriggerCmp, event_TestComplete

};

event_TestComplete.Set();

int i = WaitHandle.WaitAny(waitHandle,1000);     //返回2 ,  ?没有任何Event 时,返回258

//不支持一个 STA 线程上针对多个句柄的 WaitAll。WaitAll 不能在单线程中使用

解决方法1

ThreadPool.QueueUserWorkItem(DoWork);

public void DoWork(object state)

{

ManualResetEvent[] manualEvents =

new ManualResetEvent[5];

for (int i = 0; i < 5; i++)

{

manualEvents[i] = new ManualResetEvent(true);

}

bool b = WaitHandle.WaitAll(manualEvents, 100);

b = true;

}

解决方法2

public bool Waitall()

{

ManualResetEvent[] manualEvents =

new ManualResetEvent[5];

for (int i = 0; i < 5; i++)

{

manualEvents[i] = new ManualResetEvent(true);

}

bool b = WaitHandle.WaitAll(manualEvents, 100);

return b;

}

public async void AsyncWaitAll()

{

await Task.Run(() => Waitall());

}