【问题标题】:main thread sleep will waiting for an event in C#主线程睡眠将等待 C# 中的事件
【发布时间】:2013-02-05 19:43:04
【问题描述】:

我有一个带有 dataRevised 事件的串行端口对象,我需要让我的主线程睡眠将等待事件触发 dataRevised 事件,我使用信号量但是当等待事件的主线程不会触发时,我需要解决方案尽可能快,我在 .NET 2.0 中使用 C#。 换句话说,我需要代码:

lock(_lock){
     _serialPort.write(cmd);
     ans=_serialPort.read();
 }

要从头到尾不间断地运行,问题是我需要等待传入的数据,所以会有一些东西要读取。

【问题讨论】:

  • 代码? (请)到目前为止你做了什么?它很方便,所以我们有更多的上下文。
  • 我不能在这里写出确切的代码,但简单地说,我需要非重叠 I/O 所以代码:lock(_lock){ _serialPort.write(cmd); ans=_serialPort.read(); } 将从头到尾运行而不会中断。
  • 您不需要在此处编写确切代码。 S.O. 的奇妙之处是我们几乎所有人都明白保持公司软件足够的秘密。你所说的暴露是一件非常的小事。如果有人可以回答如何 这样做,那么很有可能它还不足以破坏您的保密协议。此外,学习公开适量的代码是一项非常有用的技能。我强烈建议您尝试(并学习)作为 S.O.这样对你会更加有用。
  • S.O 代表什么?还有我在更新中写的内容呢?
  • S.O. == Stack Overflow,这有点好...你已经尝试了什么?

标签: c# multithreading events serial-port


【解决方案1】:

我需要让我的主线程休眠以等待事件触发 dataRevised 事件

但是当等待事件的主线程不会触发时

显然你不能让你的主线程休眠,因为如果你这样做,事件不会触发。您需要重新设计您的应用程序,以便您的主线程在事件引发之前不需要休眠。

【讨论】:

  • i thout 类似于将事件的 delaget 传递到 thred 并让他等待事件的任何方法都不是这样做的吗?
  • @user1120007 如果您正在执行阻塞等待,则不会,因为如果主线程被阻塞,事件将无法触发。您需要改为进行非阻塞等待。
  • 我改变了我的设计,所以情况就是这样,为了个人利益,如何让一个人参加这个活动?
  • @user1120007 我不明白你所说的“参加活动”是什么意思。
  • 该事件将启动一个方法,这是我的想法
猜你喜欢
  • 2017-07-02
  • 2013-05-29
  • 2020-02-11
  • 1970-01-01
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
相关资源
最近更新 更多