草庐IT

线程锁

全部标签

c# - 如何轻松使这个计数器属性线程安全?

我在只有计数器的类中有属性定义,这必须是线程安全的,这不是因为get和set不在同一个锁中,如何做到这一点?privateint_DoneCounter;publicintDoneCounter{get{return_DoneCounter;}set{lock(sync){_DoneCounter=value;}}} 最佳答案 如果您希望以保证DoneCounter=DoneCounter+1不受竞争条件影响的方式实现属性,则不能在属性的实现中完成。该操作不是原子操作,它实际上是三个不同的步骤:检索DoneCounter的值。加1将

C# RabbitMQ 客户端线程安全

ConnectionFactoryfactory=newConnectionFactory{HostName="localhost"};using(IConnectionconnection=factory.CreateConnection())using(IModelchannel=connection.CreateModel()){channel.QueueDeclare("hello",false,false,false,null);for(inti=0;i我有上面的代码,我对线程安全性很好奇。我不确定,但我想ConnectionFactory是线程安全的。但是IConnecti

c# - List<T>.Contains() 是线程安全调用 - C#

我的理解是,如果您在C#中使用泛型列表(List),那么它可以支持多个并发读取器,但只能支持一个写入器。当您将编写器引入混合时,您还必须提供同步结构以使操作线程安全。List.Contains是否被视为读取操作?换句话说,如果我调用这个方法,我是否需要担心写入者可能同时写入这个列表? 最佳答案 是的,你应该。基本上,如果列表可能同时用于写入,我会同步任何操作。一般来说,我发现集合分为两类-一种是创建、初始化然后再也不会更改(线程安全),另一种是随着时间的推移而发生变化(非线程安全,所有访问都锁定)。

c# - 创建参数化线程的问题

我在尝试使用ParameterizedThreadStart创建线程时遇到问题。这是我现在的代码:publicclassMyClass{publicstaticvoidFoo(intx){ParameterizedThreadStartp=newParameterizedThreadStart(Bar);//nooverloadforBarmatchesdelegateParameterizedThreadStartThreadmyThread=newThread(p);myThread.Start(x);}privatestaticvoidBar(intx){//dowork}}我不

c# - 如何强制所有程序线程在程序关闭时退出?

如何确保在关闭主窗口后所有程序线程都中止? 最佳答案 您可以将“IsBackground”属性设置为true。CLR在应用程序退出时关闭所有后台线程。 关于c#-如何强制所有程序线程在程序关闭时退出?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7685909/

c# - 执行多线程 foreach 循环的最佳方法

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭9年前。Improvethisquestion我有一个带有foreach的发送电子邮件方法,如下所示:staticvoidMain(string[]args){foreach(varuserinGetAllUsers()){SendMail(user.Email);}}我需要改进那个方法。使用多线程,因为我不想每次为每个用户等待SendMail方法执行。有什么建议吗?谢谢

c# - 从另一个线程关闭表单

我有这段运行.exe的代码stringopenEXE=@"C:\Users\marek\Documents\VisualStudio2012\Projects\tours\tours\bin\Debug\netpokl.exe";Processb=Process.Start(openEXE);b.EnableRaisingEvents=true;b.Exited+=(netpokl_Closed);当它关闭时,它调用方法netpokl_Closed。问题是当我insertintonetpokl_Closedcommand-this.Close()这个异常出现:Cross-threado

c# - Entity Framework new transaction is not allowed because there are other threads running in the session,多线程保存

我正在尝试将多线程进程的日志保存在数据库中,但出现以下错误:不允许新事务,因为session中还有其他线程在运行。在每个胎面我都有这个功能:internalboolWriteTrace(IResultresult,stringmessage,bytetype){SPC_SENDING_TRACEtrace=newSPC_SENDING_TRACE(message,Parent.currentLine.CD_LINE,type,Parent.currentUser.FULLNAME,Parent.guid);Context.SPC_SENDING_TRACE.AddObject(trac

c# - 如何使用线程或计时器从 WPF 客户端应用程序定期执行方法

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我正在开发一个WPF客户端应用程序。这个应用程序定期向webservice发送数据。当用户登录到应用程序时,我希望每5mts运行一次特定方法以将数据发送到.asmx服务。我的问题是我是否需要使用线程或计时器。此方法的执行应该在用户与应用程序交互时发生。即在此方法执行期间不阻塞UI有什么资源可以找吗?

C# 5 async/await 线程机制感觉不对?

为什么调用线程要进入异步方法直到内部'await'?调用异步方法后立即生成一个线程不是更干净吗?这样您就可以确定异步方法会立即返回。您不必担心在异步方法的早期阶段没有做任何昂贵的事情。我倾向于知道一个方法是否会在“我的”线程上执行代码。不管堵不堵。该模型似乎开启了一系列介于两者之间的可能性。设计师比我聪明得多,所以我确信这是有充分理由的,我只是想好好想想。 最佳答案 Isn'titcleanertojustspawnathreadassoonasanasyncmethodiscalled.“异步”方法的全部意义在于避免生成新线程。您