草庐IT

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# - 创建新线程,传递参数

我想创建一个线程,然后给它传递参数。但我不知道怎么办。ThreadsiteDownloader=newThread(newParameterizedThreadStart(GetHTML));这是我想作为新线程启动的函数。staticstringGetHTML(stringsiteURL){WebClientwebClient=newWebClient();try{stringsitePrefix=siteURL.Substring(0,7);if(sitePrefix!="http://"){siteURL="http://"+siteURL;}}catch{siteURL="htt

c# - 使用带参数的方法创建新线程

这个问题在这里已经有了答案:c#threadmethod(5个答案)关闭9年前。我正在尝试创建新线程并传递一个带参数的方法,但是出错了。Threadt=newThread(myMethod);t.Start(myGrid);publicvoidmyMethod(UltraGridmyGrid){}--------错误------------Error:CS1502-line92(164)-Thebestoverloadedmethodmatchfor'System.Threading.Thread.Thread(System.Threading.ThreadStart)'hassome

C# 在新进程启动时引发事件

嘿,有没有办法在不使用ManagementEventWatcher且不使用Process.GetProcesses()的情况下启动新进程时引发事件?ManagementEventWatcher的问题是用户需要有很高的premmisions。谢谢!!! 最佳答案 与您当前使用的外部事件Win32_ProcessStartTrace不同,__InstanceCreationEvent和__InstanceDeletionEventWMI内部事件不需要管理员权限。下面是一个示例查询,您可以使用它来跟踪进程启动:SELECTTargetIn

c# - 在线程之间共享局部变量是否安全(通过回调闭包)?

我想做类似下面的事情-基本上我正在调用一个异步操作,它将在另一个线程中调用回调,我想等待它完成“内联”。我担心的是,由于例如存储在寄存器中,跨线程共享的更改变量(栏和事件)可能不会同步。如果它们是成员变量,我可以将它们标记为volatile,但volatile不能用于在堆栈上创建的局部变量。我可以使用成员变量,但我认为它更干净,不会因为将其全部保留在本地而使我的类困惑。Barbar=null;ManualResetEventevent=newManualResetEvent(false);foo.AsyncOperation(newAction(()=>{//Thisdelegatew

c# - DLL 中的单例类可以跨进程共享吗?

我正在创建一个自定义的.net硬件框架,其他程序员将使用它来控制某些硬件。他们将添加对我们的DLL的引用以访问我们的硬件框架。我需要一个可以从多个应用程序(进程)访问的共享类。单例模式似乎是我所需要的,但它只适用于进程内的多个线程。我可能完全错了,但这是我目前拥有的C#代码的示例。我不禁觉得设计不正确。我希望我可以分享更具体的信息,但我不能。我必须强调,我无法控制客户的申请。解决方案必须包含在框架(DLL)本身中。框架:(共享DLL)publicclassResources{staticreadonlyResourcesm_instance=newResources();publics

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

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

c# - Visual Studio 2010 安装项目,卸载或更改程序列表中缺少图标

我已经为我的wpf应用程序创建了一个安装项目,并为开始菜单和桌面快捷方式设置了一个图标。如何将我的图标添加到卸载或更改程序列表中?现在它只显示烦人的默认图标。谢谢。 最佳答案 在解决方案资源管理器中单击您的安装项目根节点,然后查看属性窗口。您会在那里看到所需的设置。 关于c#-VisualStudio2010安装项目,卸载或更改程序列表中缺少图标,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/que

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

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