关于 AutoResetEvent 的介绍的简单示例
2018-09-09 17:03 音乐让我说 阅读(252) 评论(0) 编辑 收藏 举报关于 AutoResetEvent 的介绍的简单示例
直接贴代码了:
class Program { static void Main(string[] args) { string result = null; Console.WriteLine(string.Format("当前时间:{0},现在是主线程,准备开始多线程...", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); AutoResetEvent resetEvent = new AutoResetEvent(false); ThreadPool.QueueUserWorkItem(new WaitCallback(state => { result = DoSomething(); resetEvent.Set(); })); resetEvent.WaitOne(); Console.WriteLine("多线程返回的值:" + result); Console.WriteLine(string.Format("当前时间:{0},多线程执行完毕,回到主线程。", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); } static string DoSomething() { Thread.Sleep(3000); return "Finished"; } }
运行截图:
关于 委托的 BeginInvoke 方法
直接贴代码了:
class Program { static void Main(string[] args) { string result = null; Console.WriteLine(string.Format("当前时间:{0},现在是主线程,准备开始多线程...", DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss"))); var doSomgthingDelegate = new Func<string>(DoSomething); var asyncResult = doSomgthingDelegate.BeginInvoke(new AsyncCallback(aresult => { result = doSomgthingDelegate.EndInvoke(aresult); }), null); asyncResult.AsyncWaitHandle.WaitOne(); Console.WriteLine("多线程返回的值:" + result); Console.WriteLine(string.Format("当前时间:{0},多线程执行完毕,回到主线程。", DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss"))); } static string DoSomething() { Thread.Sleep(3000); return "Finished"; } }
运行截图(注意:多线程返回的值为 NULL,有问题):
谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步