jjzjj

Threading

全部标签

c# - System.Timers.Timer 与 System.Threading.Timer 的线程安全

在本文中:http://msdn.microsoft.com/en-us/magazine/cc164015.aspx作者声明System.Threading.Timer不是线程安全的。从那时起,这在博客上、Richter的书“CLRviaC#”和SO中都重复了这一点,但这从来没有被证明是合理的。此外MSDNdocumentation确保“这种类型是线程安全的。”1)谁说的是真话?2)如果这是原始文章,是什么让System.Threading.Timer不是线程安全的,以及它的包装器System.Timers.Timer如何实现更多的线程安全?谢谢 最佳答案

c# - 访问冲突异常之谜

我使用EMGU+OpenCV已经有一段时间了,遇到了这个AccessViolationException谜团。首先,代码:classAVE_Simulation{publicstaticintWidth=7500;publicstaticintHeight=7500;publicstaticEmgu.CV.Image[]Images;staticvoidMain(string[]args){intN=50;intThreads=5;Images=newEmgu.CV.Image[N];Console.WriteLine("Start");ParallelOptionspo=newPar

c# - 访问冲突异常之谜

我使用EMGU+OpenCV已经有一段时间了,遇到了这个AccessViolationException谜团。首先,代码:classAVE_Simulation{publicstaticintWidth=7500;publicstaticintHeight=7500;publicstaticEmgu.CV.Image[]Images;staticvoidMain(string[]args){intN=50;intThreads=5;Images=newEmgu.CV.Image[N];Console.WriteLine("Start");ParallelOptionspo=newPar

c# - .NET 应用程序无法启动并收到 XamlParseException

我编写了一个可以在我的开发电脑(Window7)上安装和运行的应用。开发环境:安装了.NET4和.NET3.5的Window7、VS2010WPFC#在其他客户端计算机(XPSP3、2和1)上,安装没有错误,但无法启动。在任务管理器中,我可以看到应用程序在自行关闭之前短暂占用内存。我通过以下操作确保了.NET3.5在我的开发PC和各种客户端XP机器上的一致性:应用程序面向.NET3.5(或3.5ClientProfile)使用VS2010Installer进行部署:在启动条件下以.NET3.5为目标在调试应用程序和安装程序项目期间,没有任何关于.NET兼容性的错误eventvwr捕获了

c# - .NET 应用程序无法启动并收到 XamlParseException

我编写了一个可以在我的开发电脑(Window7)上安装和运行的应用。开发环境:安装了.NET4和.NET3.5的Window7、VS2010WPFC#在其他客户端计算机(XPSP3、2和1)上,安装没有错误,但无法启动。在任务管理器中,我可以看到应用程序在自行关闭之前短暂占用内存。我通过以下操作确保了.NET3.5在我的开发PC和各种客户端XP机器上的一致性:应用程序面向.NET3.5(或3.5ClientProfile)使用VS2010Installer进行部署:在启动条件下以.NET3.5为目标在调试应用程序和安装程序项目期间,没有任何关于.NET兼容性的错误eventvwr捕获了

c# - 可靠地停止 System.Threading.Timer?

好吧,我已经搜索了很多解决方案。我正在寻找一种干净简单的方法来防止System.Threading.Timer的回调方法在我停止后被调用。我似乎找不到任何东西,这导致我偶尔求助于可怕的thread-thread.sleep-thread.abort组合。可以用lock来实现吗? 最佳答案 一个更简单的解决方案可能是将Timer设置为永不恢复;方法Timer.Change可以为dueTime和period取值,指示计时器永不重启:this.Timer.Change(Timeout.Infinite,Timeout.Infinite);

c# - 可靠地停止 System.Threading.Timer?

好吧,我已经搜索了很多解决方案。我正在寻找一种干净简单的方法来防止System.Threading.Timer的回调方法在我停止后被调用。我似乎找不到任何东西,这导致我偶尔求助于可怕的thread-thread.sleep-thread.abort组合。可以用lock来实现吗? 最佳答案 一个更简单的解决方案可能是将Timer设置为永不恢复;方法Timer.Change可以为dueTime和period取值,指示计时器永不重启:this.Timer.Change(Timeout.Infinite,Timeout.Infinite);

c# - C# 中的 System.Threading.Timer 似乎不起作用。它每 3 秒运行一次非常快

我有一个计时器对象。我希望它每分钟运行一次。具体来说,它应该运行OnCallBack方法,并在OnCallBack方法运行时变为非事件状态。一旦OnCallBack方法完成,它(aOnCallBack)将重新启动计时器。这是我现在拥有的:privatestaticTimertimer;privatestaticvoidMain(){timer=newTimer(_=>OnCallBack(),null,0,1000*10);//every10secondsConsole.ReadLine();}privatestaticvoidOnCallBack(){timer.Change(Tim

c# - C# 中的 System.Threading.Timer 似乎不起作用。它每 3 秒运行一次非常快

我有一个计时器对象。我希望它每分钟运行一次。具体来说,它应该运行OnCallBack方法,并在OnCallBack方法运行时变为非事件状态。一旦OnCallBack方法完成,它(aOnCallBack)将重新启动计时器。这是我现在拥有的:privatestaticTimertimer;privatestaticvoidMain(){timer=newTimer(_=>OnCallBack(),null,0,1000*10);//every10secondsConsole.ReadLine();}privatestaticvoidOnCallBack(){timer.Change(Tim

Linux 内核 : Threading vs Process - task_struct vs thread_info

我读到Linux不支持线程或轻量级进程的概念,它认为内核线程与任何其他进程一样。然而,这个原则并没有很准确地反射(reflect)在代码中。我们看到保存进程状态信息的task_struct(如果错误请纠正我)以及附加到进程内核堆栈底部的thread_info。现在的问题是,当linux应该像任何其他进程一样解释线程时,为什么代码通过thread_info支持独立线程的概念?请让我知道我在这里遗漏了什么——我是linux内核开发的新手。 最佳答案 Linux中的线程被视为恰好共享某些资源的进程。每个线程都有自己的thread_info