我的方法是这样的:
public voID setoutput(int value) { try { GPOs gpos = reader.Config.GPO; gpos[1].PortState = GPOs.GPO_PORT_STATE.TRUE; gpos[2].PortState = GPOs.GPO_PORT_STATE.TRUE; Thread.Sleep(WAIT); gpos[1].PortState = GPOs.GPO_PORT_STATE.FALSE; gpos[2].PortState = GPOs.GPO_PORT_STATE.FALSE; } catch (Exception ex) { logger.Error("An Exception occure while setting GPO to " + value + " " + ex.Message); } }解决方法 您可以将锁定对象与
Monitor.TryEnter
结合使用. private Object outputLock = new Object();public voID setoutput(int value){ if Monitor.TryEnter(outputLock) { try { .... your code in here } finally { Monitor.Exit(outputLock); } }}
每次只允许一个线程进入Monitor.TryEnter块.如果一个线程到达此处,而另一个线程在里面,则Monitor.TryEnter返回false.
总结以上是内存溢出为你收集整理的C#只有一个线程执行全部内容,希望文章能够帮你解决C#只有一个线程执行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)