草庐IT

thread-local

全部标签

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# - Thread.Sleep 与 Task.Delay?

我知道Thread.Sleep阻塞了一个线程。但是Task.Delay也会阻塞吗?或者它就像Timer一样使用一个线程来处理所有回调(当不重叠时)?(this问题不包括差异) 最佳答案 MSDN上的文档令人失望,但使用Reflector反编译Task.Delay可提供更多信息:publicstaticTaskDelay(intmillisecondsDelay,CancellationTokencancellationToken){if(millisecondsDelay基本上,这个方法只是一个包裹在任务中的计时器。所以是的,您可以

c# - Thread.Sleep 与 Task.Delay?

我知道Thread.Sleep阻塞了一个线程。但是Task.Delay也会阻塞吗?或者它就像Timer一样使用一个线程来处理所有回调(当不重叠时)?(this问题不包括差异) 最佳答案 MSDN上的文档令人失望,但使用Reflector反编译Task.Delay可提供更多信息:publicstaticTaskDelay(intmillisecondsDelay,CancellationTokencancellationToken){if(millisecondsDelay基本上,这个方法只是一个包裹在任务中的计时器。所以是的,您可以

c# - 比较使用 Thread.Sleep 和 Timer 延迟执行

我有一个方法应该延迟指定的时间运行。我应该使用Threadthread=newThread(()=>{Thread.Sleep(millisecond);action();});thread.IsBackground=true;thread.Start();或者Timertimer=newTimer(o=>action(),null,millisecond,-1);我读过一些articles关于如何使用Thread.Sleep是糟糕的设计。但我真的不明白为什么。但是,为了使用Timer,Timer有一个dispose方法。由于执行延迟,我不知道如何处理Timer。你有什么建议吗?或者,

c# - 比较使用 Thread.Sleep 和 Timer 延迟执行

我有一个方法应该延迟指定的时间运行。我应该使用Threadthread=newThread(()=>{Thread.Sleep(millisecond);action();});thread.IsBackground=true;thread.Start();或者Timertimer=newTimer(o=>action(),null,millisecond,-1);我读过一些articles关于如何使用Thread.Sleep是糟糕的设计。但我真的不明白为什么。但是,为了使用Timer,Timer有一个dispose方法。由于执行延迟,我不知道如何处理Timer。你有什么建议吗?或者,

c# - 为什么会出现编译错误 "Use of unassigned local variable"?

我的代码如下inttmpCnt;if(name=="Dude")tmpCnt++;为什么会出现错误“使用未分配的局部变量tmpCnt”?我知道我没有明确地初始化它,但是由于DefaultValueTable无论如何,值类型都是用0初始化的。该引用文献还提醒我:RememberthatusinguninitializedvariablesinC#isnotallowed.但是如果默认情况下已经完成,为什么我必须明确地执行它?如果我不必这样做,它不会获得性能吗? 最佳答案 局部变量没有被初始化。您必须手动初始化它们。成员被初始化,例如:

c# - 为什么会出现编译错误 "Use of unassigned local variable"?

我的代码如下inttmpCnt;if(name=="Dude")tmpCnt++;为什么会出现错误“使用未分配的局部变量tmpCnt”?我知道我没有明确地初始化它,但是由于DefaultValueTable无论如何,值类型都是用0初始化的。该引用文献还提醒我:RememberthatusinguninitializedvariablesinC#isnotallowed.但是如果默认情况下已经完成,为什么我必须明确地执行它?如果我不必这样做,它不会获得性能吗? 最佳答案 局部变量没有被初始化。您必须手动初始化它们。成员被初始化,例如:

c# - 为什么我会看到多条 "The thread 0x22c8 has exited with code 259 (0x103)."消息

我在我的Winforms应用程序中收到了大量这些消息,尽管我从未明确创建任何线程。为什么会这样?我四处寻找解释,但很难用这样的方式来表达询问。我使用的是VisualStudios2013,这是我关心的调试输出:Thethread0x23a4hasexitedwithcode259(0x103).Thethread0x2884hasexitedwithcode259(0x103).Thethread0x27echasexitedwithcode259(0x103).Thethread0x1978hasexitedwithcode259(0x103).Thethread0x1534hase

c# - 为什么我会看到多条 "The thread 0x22c8 has exited with code 259 (0x103)."消息

我在我的Winforms应用程序中收到了大量这些消息,尽管我从未明确创建任何线程。为什么会这样?我四处寻找解释,但很难用这样的方式来表达询问。我使用的是VisualStudios2013,这是我关心的调试输出:Thethread0x23a4hasexitedwithcode259(0x103).Thethread0x2884hasexitedwithcode259(0x103).Thethread0x27echasexitedwithcode259(0x103).Thethread0x1978hasexitedwithcode259(0x103).Thethread0x1534hase