草庐IT

jwz_threading

全部标签

c# - 将锁与 Threading.Timer 一起使用

我有一个Windows服务应用程序,它使用Threading.Timer和TimerCallback在特定时间间隔进行一些处理。我需要一次将此处理代码锁定到1个线程。因此,例如,启动服务并触发第一个回调,然后启动一个线程并开始处理。只要处理在下一次回调之前完成,这就可以正常工作。例如,处理时间比平时稍长,并且在另一个线程正在处理时再次触发TimerCallback,我需要让该线程等待另一个线程完成。这是我的代码示例:staticTimertimer;staticobjectlocker=newobject();publicvoidStart(){varcallback=newTimer

c# - Thread.Sleep(timeout) 和 ManualResetEvent.Wait(timeout) 有什么区别?

Thread.Sleep(timeout)和resetEvent.Wait(timeout)都会导致执行暂停至少timeout毫秒,那么它们之间有区别吗?我知道Thread.Sleep导致线程放弃其时间片的剩余部分,因此可能导致sleep持续时间比请求的时间长得多。ManualResetEvent对象的Wait(timeout)方法是否有同样的问题?编辑:我知道ManualResetEvent的要点是从另一个线程发出信号-现在我只关心事件的Wait方法指定超时的情况,并且没有其他来电者设置事件。我想知道按时唤醒是否比Thread.Sleep更可靠 最佳答案

c# - 预定义类型 'System.Threading.Tasks.Task' 在全局别名的多个程序集中定义

我刚刚建立了一个新的asp.netmvc4项目,结合使用最新的.net框架(4.5)和VisualStudio2012。在我添加了一些类、辅助项目等之后。我突然注意到我编译项目时收到5次相同的警告。警告指出:ASPNETCOMPILER:warningCS1685:Thepredefinedtype'System.Threading.Tasks.Task'isdefinedinmultipleassembliesintheglobalalias;usingdefinitionfrom'c:\ProgramFiles(x86)\ReferenceAssemblies\Microsoft\

c# - 无法将类型 'bool' 隐式转换为 'system.threading.tasks.task bool'

我在服务实现代码中遇到此错误:“无法将类型‘bool’隐式转换为‘system.threading.tasks.taskbool’”。你能更正我的代码吗?publicTasklogin(stringusn,stringpwd){DataClasses1DataContextauth=newDataClasses1DataContext();varmessage=frompinauth.Userswherep.usrName==usn&&p.usrPass==pwdselectp;if(message.Count()>0){returntrue;}else{returnfalse;}}

c# - 如何在 C#(托管代码)中获取 *THREAD* 的 CPU 使用率和/或 RAM 使用率?

我知道如何获取进程的CPU使用率和内存使用率,但我想知道如何在每个线程级别上获取它。如果最好的解决方案是进行一些P调用,那也很好。我需要的例子:ThreadmyThread=Thread.CurrentThread;//sometimelaterinsomeotherfunction...Console.WriteLine(GetThreadSpecificCpuUsage(myThread)); 最佳答案 如前所述,无法回答内存使用情况,因为这是整个进程的一个属性,但CPU使用情况:Processp=Process.GetCurr

c# - 使 System.Threading.Timer 无效会停止吗?

如果我有一个活跃的System.Threading.Timer我将它设置为null,它停止了吗?我意识到调用.Dispose()更合适,但我想要问题的答案。publicclassFoo{privateSystem.Threading.Timer_timer;publicFoo(){//initializetimer}publicvoidKillTimer(){_timer=null;}}更新:经过反复讨论是否将对System.Threading.Timer的单个引用设置为null确实会导致停止它表明没有挥之不去的引用,例如事件列表,因为线程计时器接受单一回调并且不公开事件。如果GC收集

c# - 在 Xamarin.Forms 中使用 Thread.Sleep

我要执行以下操作MainPage=newContentPage{Content=newStackLayout{Children={newButton{Text="Thread.Sleep",Command=newCommand(()=>{Thread.Sleep(1000);MainPage.Animate("",x=>MainPage.BackgroundColor=Color.FromRgb(x,x,x));}),},newButton{Text="Task.Run+Thread.Sleep",Command=newCommand(async()=>{awaitTask.Run((

c# - 等待和异步属性中的方法错误 'Cannot await ' System.Threading.Tasks.Task'

我已经为.NETFramework4、Silverlight4和5以及WindowsPhone7.5和8安装了NuGetPackageAsync。Version1.0.16我使用的是Microsoft.NET4.0,但由于虚拟主机包限制,我无法升级。(可悲!)我的测试代码:(我正在执行LinqtoSQL查询代替Thread.Sleep)publicclassSearch{publicasyncTask>GetResults(stringSearchString){awaitSystem.Threading.Tasks.Task.Factory.StartNew(()=>Thread.S

c# - System.Threading.Thread继承

是否可以继承Thread类并重写Start方法? 最佳答案 关于为什么有人要这样做:许多语言(例如Java)和/或线程API(例如Qt)允许开发人员通过从“线程”基类继承,然后重载一个方法来实现线程实现线程例程。在Qt中广泛使用了这个模型后,我实际上发现它非常方便——不是让线程以某些函数或方法为目标,这通常会导致奇怪和/或令人费解的代码,而是将整个线程包含在一个对象中。这是使用QtAPI的示例代码:classMyThread:publicQThread{Q_OBJECTprotected:voidrun();};voidMyThre

c# - 使用 Simple Injector 的 Per Thread 和 Per Web Request 的混合生活方式

我正在使用SimpleInjector作为我的IoC库。我根据网络请求注册了DbContext,它工作正常。但是有一项任务是我在后台线程中运行它。所以,我在创建DbContext实例时遇到了问题。例如Service1有一个DbContext实例Service2有一个DbContext的实例Service1和Service2从后台线程运行。Service1获取实体并将其传递给Service2Service2使用该实体,但实体与DbContext分离其实问题就出在这里:Service1.DbContext和Service2.DbContext的区别。似乎当我在ASP.NETMVC中的单独线