当前执行的程序占用了某资源,事件触发的也用到该资源,这样会发生什么事情?

XUYH3307 2011-10-26 11:16:52
如果我当前的程序正在使用某个资源(比如串口),这时我触发了某个事件(比如按按钮控件触发了发送数据命令)也用到了这个资源(还是串口),那么这时程序会怎么执行?
是先执行完当前程序在执行触发事件,还是先执行触发事件?
如果是先执行触发事件,这样数据可能就乱套了,怎么样可以避免?

刚开始学C#,运行机制还不是很明白,
...全文
284 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
XUYH3307 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xlikena 的回复:]

额,抱歉了,我的理解就只有这些.或许你可以尝试一下将代码发上来,如果不是很敏感的话.
大概会有高手帮你吧..
[/Quote]

问题已经解决了,原来很简单,在合适的位置加上LOCK,做成一个原子操作就可以了。
当然,如果往源头说,那就是多线程处理了呵呵。
XUYH3307 2011-10-28
  • 打赏
  • 举报
回复
高手帮帮忙,再up一下
Ahearn 2011-10-27
  • 打赏
  • 举报
回复
同求解!!
如此 2011-10-27
  • 打赏
  • 举报
回复
额,抱歉了,我的理解就只有这些.或许你可以尝试一下将代码发上来,如果不是很敏感的话.
大概会有高手帮你吧..
XUYH3307 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xlikena 的回复:]
貌似是直接报异常了吧,同一个串口的话,你要发数据总要打开吧,打开的时候就报出串口被占用异常了.
我倒是没特意的试过.但是有一次使用读卡器和热敏打印机使用同一个串口就出现过这样的问题.
打印机正常打印,但是读卡器的串口不能启动,我做了异常处理.报出的是串口被占用异常.
[/Quote]

这个应该不太一样吧?毕竟你的串口是被两个软件占用,我的是一个软件。
我也试了一下(在虚拟串口上),然后有两个函数都向下位机发送命令,
结果下位机两个命令都接收到了,而且在同一帧数据里面,串口没有捕捉到异常。

其中 01 10 00 01 00 01 02 00 01 66 41 为第一个命令
01 03 00 00 00 3C 45 DB 为第二个命令
如此 2011-10-27
  • 打赏
  • 举报
回复
貌似是直接报异常了吧,同一个串口的话,你要发数据总要打开吧,打开的时候就报出串口被占用异常了.
我倒是没特意的试过.但是有一次使用读卡器和热敏打印机使用同一个串口就出现过这样的问题.
打印机正常打印,但是读卡器的串口不能启动,我做了异常处理.报出的是串口被占用异常.
XUYH3307 2011-10-27
  • 打赏
  • 举报
回复
帮帮忙,UP!
sjfbtnmcn 2011-10-26
  • 打赏
  • 举报
回复
晕,这个真的不知道,帮顶

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧