草庐IT

wait_event

全部标签

c# - Thread.sleep vs Monitor.Wait vs RegisteredWaitHandle?

(以下项目有不同的目标,但我很想知道它们是如何“暂停”的)问题Thread.sleep-它会影响系统的性能吗?它会占用线程等待吗?Monitor.Wait呢?他们“等待”的方式有什么不同?他们会在等待时占用线程吗?RegisteredWaitHandle怎么样?此方法接受等待时执行的委托(delegate)句柄发出信号。在等待期间,它不会占用线程。所以一些线程被暂停并且可以被委托(delegate)唤醒,而其他线程只是等待?旋转?有人可以把事情说清楚吗?编辑http://www.albahari.com/threading/part2.aspx 最佳答案

c# - 跨线程操作无效(How to access WinForm elements from another module events?)

我有一个带有串行端口信号事件的模块serialPort.DataReceived.AddHandler(SerialDataReceivedEventHandler(DataReceived));DataReceived在哪里letDataReceivedab=rxstringProcessData正在调用WinForms方法letProcessData(a,b)=dataProcessor.Invoke(a,b)|>ignore这是privatevoidProcessData(objectsender,EventArgse){byte[]m=Core.ncon.ArrayRead;s

c# - 'Event' 的无效值 - 属性 (XAML Eventsetter)

我正在使用VisualStudio2015社区,但收到以下错误消息:Invalidvaluefor'Event'-Property:Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.XmlValue.下面是代码:我试过UIElement.MouseEnter、Mouse.MouseEnter、TextBox.MouseEnter。如果我编译处理程序工作正常,但错误消息仍然存在。有什么建议吗? 最佳答案 这似乎是WPF设计器中的一个错误,正如已经报告的那

c# - 在异步操作后立即调用 Task.Wait() 是否等同于同步运行相同的操作?

换句话说,就是vartask=SomeLongRunningOperationAsync();task.Wait();功能相同SomeLongRunningOperation();换句话说,就是vartask=SomeOtherLongRunningOperationAsync();varresult=task.Result;功能相同varresult=SomeOtherLongRunningOperation();根据Task.WaitandInlining,如果正在等待Wait的任务已经开始执行,则Wait必须阻塞。然而,如果它还没有开始执行,Wait可能能够将目标任务从它排队的调

c# - Task.Delay().Wait() 是怎么回事?

我很困惑,为什么Task.Delay().Wait()需要4倍的时间,然后是Thread.Sleep()?例如task-00是否在仅线程9上运行并花费了2193毫秒?我知道,同步等待在任务中很糟糕,因为整个线程都被阻塞了。仅供测试。控制台应用程序中的简单测试:boolflag=true;varsw=Stopwatch.StartNew();for(inti=0;i{Console.WriteLine($"task-{cntr.ToString("00")}\tThrID:{Thread.CurrentThread.ManagedThreadId.ToString("00")},\tWa

c# - UIElement.AddHandler() 与 .Event += 定义

问题的第一部分:这2个事件注册之间有什么区别?_popUp.AddHandler(PreviewMouseLeftButtonDownEvent,newMouseButtonEventHandler(PopUp_PreviewMouseLeftButtonDown));_popUp.PreviewMouseLeftButtonDown+=newMouseButtonEventHandler(_popUp_PreviewMouseLeftButtonDown);问题的第二部分:或最终与popUp.Opened+=PopUp_Opened; 最佳答案

c# - Monitor.Wait,条件变量

给定以下代码片段(在学习线程时在某处找到)。publicclassBlockingQueue{privatereadonlyobjectsync=newobject();privatereadonlyQueuequeue;publicBlockingQueue(){queue=newQueue();}publicvoidEnqueue(Titem){lock(sync){queue.Enqueue(item);Monitor.PulseAll(sync);}}publicTDequeue(){lock(sync){while(queue.Count==0)Monitor.Wait(sy

c# - event 关键字的真正作用是什么?

publicdelegatevoidSecondChangedHandler(objectclock,TimeInfoEventArgstimeInformation);publiceventSecondChangedHandlerSecondChanged;我已经基于这个写了一个时钟article.现在,如果我删除event关键字,我会得到相同的结果,那么event到底做了什么? 最佳答案 它的编译方式不同。做到了有人做不到mySecondChangedHandler.SecondChanged=SomeMethod(...);/

c# - 在没有 Wait() 的情况下使用 TPL 处理异常

我有一个带有“开始”和“停止”按钮的应用程序,以及一个在按下“开始”后在后台运行的线程。我为此使用MVC和TPL。我从不调用Wait()方法,如何处理TPL中的异常?在任何异常情况下,我都需要显示错误消息框,并且该框应该在它被立即抛出后显示。我一直在后台运行单线程,所以你不能在没有事先停止线程的情况下按开始。我正在寻找一些好的模式或最佳实践。我有一个想法将try..catch放在线程中,并在每次捕获时调用一个事件,但我不确定这种方法是否是好的架构决策 最佳答案 如果您正在使用Tasks,您可以添加一个仅在抛出异常时才运行的延续。您还

c# - C# 'event' 关键字的多重含义?

我最近重新阅读了EricLippert的ridiculouslyawesome上的一些旧帖子博客并遇到thistidbit:AconsiderablefractionofthekeywordsofC#areusedintwoormoreways:fixed,into,partial,out,in,new,delegate,where,using,class,struct,true,false,base,this,event,returnandvoidallhaveatleasttwodifferentmeanings.为了好玩,我的同事和我自问自答,除了其中一个关键字之外,我能够为所有