草庐IT

C++11多线程—thread

全部标签

c# - 调用线程必须是 STA,因为在 WPF 中很多 UI 组件都需要这个

这个问题在这里已经有了答案:"ThecallingthreadmustbeSTA,becausemanyUIcomponentsrequirethis"errorwhencreatingaWPFpop-upWindowinthread(2个答案)关闭1年前。我的场景:voidInstaller1_AfterInstall(objectsender,InstallEventArgse){try{MainWindowObjMain=newMainWindow();ObjMain.Show();}catch(Exceptionex){Log.Write(ex);}}我收到错误消息“调用线程必

c# - System.Threading.Tasks 中的 NullReferenceException 调用 HttpClient.GetAsync(url)

我的MVC4.0应用程序有一个奇怪的问题。我使用REST网络服务(AmazonAssociate)。我创建了一种方法,可以在任何地方使用。缩短版是这样的:privateasyncTaskGetRequest(stringurl){stringmyresponse;HttpResponseMessageresponse=null;HttpClientclient=newHttpClient();try{response=awaitclient.GetAsync(url);myresponse=response.Content.ToString();if(myresponse.Contai

c# - 主线程结束时线程不会终止

我有一个奇怪的问题:在我的C#应用程序中,我正在创建另一个线程,如下所示:ThreadprintThread=newThread(printWorker);printThread.Name="LoggerMainThread";printThread.IsBackground=true;printThread.Start();当我的主线程结束时,这个新线程继续工作,尽管它被标记为后台。这可能是什么原因造成的?这个对象持有一个Mutex对象,不确定这可能是原因......有什么想法吗?这是来自printWorker方法的代码:while(loggerIsActive){LogMessag

c# - 使用 C# 在 Windows 8 上获取当前线程 ID

System.Threading.Thread(带有.CurrentThread.ThreadId等)已从WinRT中删除。是否可以在Windows8中获取当前线程ID(用于调试和日志记录目的?)? 最佳答案 参见Environment.CurrentManagedThreadId在Windows商店应用程序中受支持。.NETforWindowsStoreappsSupportedin:Windows8 关于c#-使用C#在Windows8上获取当前线程ID,我们在StackOverfl

c# - RunAsync - 如何等待 UI 线程上的工作完成?

在等待Dispatcher.RunAsync时,继续会在工作安排时发生,而不是在工作完成时发生。我如何等待工作完成?编辑我最初的问题假设过早继续是由API的设计引起的,所以这是真正的问题。当使用异步委托(delegate)等待Dispatcher.RunAsync时,在委托(delegate)代码中使用await时,遇到await时会继续,不是在工作完成时。我如何等待工作完成?编辑2您可能需要分派(dispatch)已在UI线程上的工作的一个原因是解决微妙的时间和布局问题。视觉树中元素的大小和位置的值不断变化是很常见的,为UI的后续迭代安排工作会有所帮助。

c# - IEnumerable<T> 线程安全?

我有一个填充List的主线程.此外,我创建了一个将在不同线程上执行的对象链,需要访问列表。原始列表生成后将永远不会被写入。我的想法是将列表传递为IEnumerable到在其他线程上执行的对象,主要是为了不允许那些实现这些对象的人错误地写入列表。换句话说,如果保证不写入原始列表,多线程使用.Where是否安全?或foreach在IEnumerable上?如果原始集合从未更改,我不确定迭代器本身是否是线程安全的。 最佳答案 IEnumerable无法修改。那么什么可以是非线程安全的呢?(如果您不修改实际的List)。对于非线程安全,您需

c# - 并发集合在没有 Thread.Sleep 的情况下吃太多 cpu

BlockingCollection或ConcurrentQueue的正确用法是什么,这样您就可以自由地使项目出队,而不会使用线程消耗一半或更多的CPU?我正在使用2个线程运行一些测试,除非我有至少50~100毫秒的Thread.Sleep,否则它总是会占用至少50%的CPU。这是一个虚构的例子:privatevoid_DequeueItem(){objecto=null;while(socket.Connected){while(!listOfQueueItems.IsEmpty){if(listOfQueueItems.TryDequeue(outo)){//usethedata}

c# - 让线程等待 n 个脉冲

我如何等待n个脉冲?…//dosomethingwaiter.WaitForNotifications();我希望上面的线程等待直到被通知n次(被n个不同的线程或n次被同一个线程通知)。我相信有一种计数器可以执行此操作,但我找不到。 最佳答案 看看CountdownEventClass:CountdownEventClassRepresentsasynchronizationprimitivethatissignaledwhenitscountreacheszero.示例:CountdownEventwaiter=newCountd

c# - IOCP 线程 - 澄清?

阅读后thisarticle其中指出:Afteradevicefinishesitsjob,(IOoperation)-itnotifiestheCPUviainterrupt..........However,that“completion”statusonlyexistsattheOSlevel;theprocesshasitsownmemoryspacethatmustbenotified.........Sincethelibrary/BCLisusingthestandardP/InvokeoverlappedI/Osystem,ithasalreadyregisteredt

c# - 未经授权的访问异常 : Invalid cross-thread access in Silverlight application (XAML/C#)

C#相对较新,想尝试使用它来使用一些第三方Web服务API。这是XAML代码这是C#代码privatevoidButton_Click(objectsender,RoutedEventArgse){HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create("http://api.twitter.com/1/users/show/keykoo.xml");request.Method="GET";request.BeginGetResponse(newAsyncCallback(twitterCallback),request);}p