我现在要连续打印帐票,但是打印帐票的同时,还要去响应一个"中止"的button.
如果下一张帐票打印时,先要判断 是不是已经被中止了。如果中止了,就结束,否则继续。
我现在的处理是:
For i as integer = 0 To 帐票总数
1.判断是否中止
if cliEndFlg = 1 then
exit for
end if
2.帐票打印
3.Application.DoEvents()
Next
Private Sub cd006_ClickEvent(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cd006.ClickEvent
cliEndFlg = 1
End Sub
问题是:因为打印帐票时,CPU的占有率很高,我点了中止button 按钮,效果不是很好,有时可以,有时不行。
后来,我加了一个:Threading.Thread.Sleep(100)。这样的话,是可以响应到中止button按钮的事件了。
但是,我现在不想影响帐票打印的时间,各位能否给出一个方法来解决这个问题?一旦点击中止Button按钮,
可以马上响应到中止Button的事件。
8 个解决方案
#1
冒个泡先
你这个显然是要循环到判断时候才起作用,所以会出现有时可以有时不行
要马上中止,就要马上退出执行的过程
尝试看看用线程,
你这个显然是要循环到判断时候才起作用,所以会出现有时可以有时不行
要马上中止,就要马上退出执行的过程
尝试看看用线程,
#2
用多线程
Thread thread=new Thread(new ThreadStart(Print()));
thread.IsBackground=true;
thread.Start();
public cd006_ClickEvent(....
{
thread.Abort();
}
Thread thread=new Thread(new ThreadStart(Print()));
thread.IsBackground=true;
thread.Start();
public cd006_ClickEvent(....
{
thread.Abort();
}
#3
mark 学习下
#4
各位高手。。。
帮忙解决一下。。。
不胜感激!!
帮忙解决一下。。。
不胜感激!!
#5
多线程那种办法可行。
#6
多线程
#7
谢谢各位的解答。
多线程好像做不到。在主线程运行时,同时要监控另一个线程,并得到结果,这个方面 我不是很懂。
而且这是一个循环处理,如果我把打印帐票作为主线程来处理,那么每次打印帐票 不是都要开启一个新的线程嘛?
还是希望各位能给出一个例子。。
多线程好像做不到。在主线程运行时,同时要监控另一个线程,并得到结果,这个方面 我不是很懂。
而且这是一个循环处理,如果我把打印帐票作为主线程来处理,那么每次打印帐票 不是都要开启一个新的线程嘛?
还是希望各位能给出一个例子。。
#8
这个和TCP/IP编程一样的,只能用多线程。
#1
冒个泡先
你这个显然是要循环到判断时候才起作用,所以会出现有时可以有时不行
要马上中止,就要马上退出执行的过程
尝试看看用线程,
你这个显然是要循环到判断时候才起作用,所以会出现有时可以有时不行
要马上中止,就要马上退出执行的过程
尝试看看用线程,
#2
用多线程
Thread thread=new Thread(new ThreadStart(Print()));
thread.IsBackground=true;
thread.Start();
public cd006_ClickEvent(....
{
thread.Abort();
}
Thread thread=new Thread(new ThreadStart(Print()));
thread.IsBackground=true;
thread.Start();
public cd006_ClickEvent(....
{
thread.Abort();
}
#3
mark 学习下
#4
各位高手。。。
帮忙解决一下。。。
不胜感激!!
帮忙解决一下。。。
不胜感激!!
#5
多线程那种办法可行。
#6
多线程
#7
谢谢各位的解答。
多线程好像做不到。在主线程运行时,同时要监控另一个线程,并得到结果,这个方面 我不是很懂。
而且这是一个循环处理,如果我把打印帐票作为主线程来处理,那么每次打印帐票 不是都要开启一个新的线程嘛?
还是希望各位能给出一个例子。。
多线程好像做不到。在主线程运行时,同时要监控另一个线程,并得到结果,这个方面 我不是很懂。
而且这是一个循环处理,如果我把打印帐票作为主线程来处理,那么每次打印帐票 不是都要开启一个新的线程嘛?
还是希望各位能给出一个例子。。
#8
这个和TCP/IP编程一样的,只能用多线程。