中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C#中的ManualResetEvent類如何使用

小億
88
2023-08-03 14:14:51
欄目: 編程語言

在C#中,ManualResetEvent類用于實現線程的同步和協調。下面是使用ManualResetEvent類的基本方法:

  1. 創建一個ManualResetEvent對象:
ManualResetEvent mre = new ManualResetEvent(false); // 初始狀態為未發信號
  1. 等待信號:
mre.WaitOne(); // 阻塞當前線程,直到收到信號
  1. 發送信號:
mre.Set(); // 發送信號,喚醒等待中的線程
  1. 重置信號:
mre.Reset(); // 重置信號,設置為未發信號狀態

完整示例:

using System;
using System.Threading;
class Program
{
static ManualResetEvent mre = new ManualResetEvent(false);
static void Main()
{
Thread t1 = new Thread(DoWork);
Thread t2 = new Thread(DoWork);
t1.Start();
t2.Start();
Thread.Sleep(2000); // 等待線程啟動
mre.Set(); // 發送信號
Thread.Sleep(2000); // 等待線程結束
mre.Reset(); // 重置信號
mre.Set(); // 發送信號
Console.ReadLine();
}
static void DoWork()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId + " Waiting...");
mre.WaitOne(); // 等待信號
Console.WriteLine(Thread.CurrentThread.ManagedThreadId + " Resumed...");
}
}

在上述示例中,兩個線程t1和t2都會等待收到信號后才會繼續執行。調用mre.Set()方法會發送信號,喚醒等待中的線程。調用mre.Reset()方法會重置信號,設置為未發信號狀態。

0
武强县| 靖西县| 宁晋县| 丰宁| 洛南县| 桃园市| 彭阳县| 大同县| 勐海县| 青冈县| 广汉市| 佛学| 威海市| 宜兰县| 上林县| 中阳县| 龙口市| 百色市| 定州市| 建湖县| 金山区| 福安市| 莱阳市| 颍上县| 陈巴尔虎旗| 苍南县| 彰武县| 临西县| 凤庆县| 驻马店市| 左权县| 云和县| 哈尔滨市| 宣化县| 玉树县| 增城市| 恩平市| 新巴尔虎左旗| 都兰县| 响水县| 陆丰市|