Application.DoEvents()的响应时间?急,急,急

时间:2022-02-25 19:11:44
各位高手,我碰到了一个难题啊,请求帮忙。非常感谢!

     我现在要连续打印帐票,但是打印帐票的同时,还要去响应一个"中止"的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();
}

#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();
}

#3


mark 学习下

#4


各位高手。。。
  
     帮忙解决一下。。。
     不胜感激!!

#5


多线程那种办法可行。

#6


多线程

#7


谢谢各位的解答。
 
多线程好像做不到。在主线程运行时,同时要监控另一个线程,并得到结果,这个方面 我不是很懂。
而且这是一个循环处理,如果我把打印帐票作为主线程来处理,那么每次打印帐票 不是都要开启一个新的线程嘛?

还是希望各位能给出一个例子。。

#8


这个和TCP/IP编程一样的,只能用多线程。