在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
---恢复内容开始--- 介绍 var I: Integer; Total: Integer; begin // counts the prime numbers below the given value Total := 0; for I := 1 to MaxValue do begin if (I * 10 mod MaxValue) = 0 then ListView1.Items.Add.Text := 'B: ' + I.ToString; if IsPrime (I) then Inc (Total); end; ListView1.Items.Add.Text := 'Blocking: ' + Total.ToString; 复制代码 在运行过程中,程序是无响应的,屏幕更本不刷新,直到运行结束,但是这里有个问题,MaxValue如果少还行,如果数值比较大,那么我们就会看到如下的界面
提示了程序没有响应,是否需要关闭它,这显示是个大问题,我们需要来解决。 procedure TForm5.Button3Click(Sender: TObject); begin TThread.CreateAnonymousThread(procedure () var I: Integer; Total: Integer; begin Total := 0; for I := 1 to MaxValue do begin if (I * 10 mod MaxValue) = 0 then TThread.Synchronize (TThread.CurrentThread, procedure () begin ListView1.Items.Add.Text := 'Th: ' + I.ToString; end); if IsPrime (I) then Inc (Total); end; TThread.Synchronize (TThread.CurrentThread, procedure () begin ListView1.Items.Add.Text := 'Thread: ' + Total.ToString; NotifyComplete; end); end).Start; end; 当启动线程后,程序没有出现无响应的问题,或者更本不会发生什么。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论