各位英雄:
关键字:(backgroundworker, process, StreamReader) 最近做一个C#项目,遇到一个问题,很棘手,望高手指教下~
背景: 使用BackGroundWorker组件,在它的DoWork事件里,启动了一个Process(不是线程)。 问题: Process里有一段使用Read()阻塞读取的操作(也可能是EndOfStream方法),导致程序一直阻塞在这里 (即使关闭调用的进程也一样),而BackGroundWorker自身也没有提供直接结束自己调用的方法(有?不是那
个CancelAsync挂起)。 求方法:怎样直接关闭BackGroundWorker的调用(就是使他的IsBusy属性为false),或者怎样强制退出那个Read
()阻塞?
求助~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
解决方案 »
- 在线等,急,小弟快下岗了...求救提示{"关键字 'where' 附近有语法错误。"}
- 如何 在 dataGridView 中选中一行 取出该行 指定字段的值?
- 需求一个在线Sql管理器
- C#如何得到超市中的感应器中的数据
- WinForm datagridview 分页
- 1.我现在学MFC过时了吗??2.VC6能不能编译成64位的,有什么方法实现?
- 加分求解一不解问题...
- C#中关于一个存储过程的调用,错在哪里呀,online help
- 自定义属性后绑定的问题?
- 求教”在选定的数据源上未找到名为“shenfenzheng”的字段或属性“”
- (超急|100分)UserControl1中有一个Image控件,请问如何给这个改变Image里面的图片
- 非常奇怪的事,程序无法响应方向键!!!
backgroundWorker1.ReportProgress(int ,object)用于向主线层报告进度
backgroundWorker1.RunWorkerAsync():用于开始执行异步操作
backgroundWorker1.IsBusy 后台是否会执行
backgroundWorker1.WorkerReportsProgress 声明异步执行时是否可以报告进度
backgroundWorker1.WorkerSupportsCancellation 声明是否可以异步取消
backgroundWorker1.CancellationPending 是否取消异步执行参考
这个StreamReader不一样吧、、、
现在是用 C# BackGroundWork组件来代替 线程, 但这个东西没有类似于thread.Abort()的方法。
Process.WaitForExit()方法,该方法会阻塞调用线程一直等待启动的进程执行结束.
去掉这个方法的调用,如果要结束掉Process,可以用Kill()方法.
现在发生阻塞的位置是StreamReader的Read和EndOfStream 函数,即使关掉进程,还是阻塞在这里的读入流。
释放了也没用、、、还是阻塞、、强大的Read!