草庐IT

主线程

全部标签

c++ - 从工作线程调用主线程回调函数

场景:我有一个C++DLL。在这个DLL中,我创建了一个工作线程。在工作线程中,我有一个循环等待用户通过USB硬件设备输入。只有当USB设备上的用户输入满足某些条件时,循环才会结束。另外,我需要将USB设备的用户使用反馈实时反馈到屏幕上。它使用DelphiGUI进行反馈。当用户使用USB设备时,Windows系统会产生一个回调函数。此回调函数写在同一个C++DLL文件中,并作为参数传入USB设备的初始化函数。我在DLL中使用一个全局变量作为标志来确定何时必须退出此循环。我还从DelphiDLL加载这个C++DLL。DelphiDLL->C++DLL反馈显示来自DelphiDLL。基本上

c++ - 是否可以使用 c/c++ 创建一个即使主线程在 Windows 中退出也不会退出的线程?

如上图所示,一旦主线程死亡,所有其他线程将自动退出。是否可以创建一个永不死亡的线程? 最佳答案 你可以,但你可能不应该;它只会让人们感到困惑。Hereisagoodexplanation这是如何与Win32和CRT一起工作的。 关于c++-是否可以使用c/c++创建一个即使主线程在Windows中退出也不会退出的线程?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3695400

c# - 从事件处理程序在主线程中执行一个方法

我有一个继承自Queue类的自定义Queue类。它有一个事件ItemAdded。在此事件的事件处理程序中,我正在执行一个方法。但是它在主线程之外运行,尽管我希望它在主线程中运行。我不知道该怎么做。有什么建议吗?//MycustomclassusingSystem;usingSystem.Collections;//Requiredtoinheritnon-genericQueueclass.namespaceQueueWithEvent{publicclassSmartQueue:Queue{publicdelegatevoidItemAddedEventHandler(objects

c# - 如何制作一个在主线程中触发事件的 C# 计时器?

长话短说,我需要.Net中的精确计时器-以毫秒为单位的精度-意思是,如果我告诉它在10毫秒过去后触发事件,它必须这样做,+-1毫秒。内置的.NetTimer类的精度似乎为+-16ms,这对我的应用程序来说是NotAcceptable。我找到了这篇文章http://www.codeproject.com/Articles/98346/Microsecond-and-Millisecond-NET-Timer它为计时器提供了一个代码,这正是我所需要的(甚至更多-以微秒为单位)。但是,问题是,等效的OnTimer似乎是在另一个线程中执行的。所以,如果我添加一些代码,比如:label1.Tex

c# - 从其他线程调用主线程中的方法

我正在尝试在C#应用程序中同时运行3个级别的计时器例如:T1将在应用程序的开头运行,然后在其Tick事件上,T2将启动然后在T2的tick事件上,T3将启动。最后,在T3的tick事件上,应该在应用程序的主线程中做一些事情我的问题似乎是主线程中的代码在被其他线程调用时不工作如何让主线程通过其他线程的调用来运行它的功能? 最佳答案 问题很可能是您的主线程需要调用。如果您要在调试器中运行您的程序,您应该看到跨线程操作异常,但在运行时此异常检查被禁用。如果你的主线程是一个表单,你可以用这个简短的代码来处理它:if(InvokeRequir

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

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

c# - 从任务回调到主线程

因为我不太了解线程,所以我有一个问题。我想在后台和后台方法中做一些事情,我想在某些情况下切换回主线程,否则在后台工作。我怎样才能实现这个功能?我正在使用从UI类(c#)调用StartSyncThreadasyncvoidStartSyncThread(){awaitDoSyncAsync();}TaskDoSyncAsync(){returnTask.Run(()=>DoSync());}在DoSync方法中,我想切换回主线程,以便我可以更改UI。请给我一个简单的解决方案来做到这一点。提前致谢! 最佳答案 首先启动您的异步进程,然后

c# - 从线程向主线程发送异常?

我想将当前线程(该线程不是主线程)的异常传递给主线程。为什么?因为我在另一个线程中检查我的硬锁(该线程使用计时器进行检查),当HardLock不可访问或无效时,我创建了一个由我自己定义的异常,然后抛出该异常。所以那个异常(exception)不能很好地工作。;( 最佳答案 最好的办法是将Thread替换为Task(.NET4.0中的新功能)。Task类处理将异常正确编码到任何检查任务结果的线程。如果无法使用.NET4.0,则Rxextensions中的CoreEx.dll包含一个Exception.PrepareForRethrow

javascript - Web Worker `importScripts`方法能否访问主线程缓存的脚本?

实际上有多个问题:importScripts是否始终使用GET请求加载脚本,还是可以缓存脚本?importScripts能否访问缓存在主线程或浏览器上下文中的脚本?worker可以缓存脚本供主线程访问吗?(正好相反) 最佳答案 如果您正确指定诸如“Expires”或“Cache-control”之类的http缓存header,importScripts将不会再次加载脚本,请参阅googlerecomendations关于那个线程之间有一种“网关过滤器”,允许bool值、字符串等原语通过,但不允许对象/函数通过。如果您通过XHR在主线

javascript - Web Worker 被 Chrome 中的主线程阻塞

我有一个WebWorker.我希望用它进行定期网络请求。我特别想要的一件事是即使主JS执行线程被阻塞(例如被window.alert)也发出这些请求。我使用的是Chrome38。但是,当我尝试在worker中发出网络请求时,这些请求似乎被UI线程阻止了。这是一个人为的例子来说明这个问题:基础.js:varworker=newWorker("/worker.js");setTimeout(function(){console.log("beginblocking");varstartDt=newDate();varblockPeriod=5000;vara;//Obviouslywe'd