问题描述
在第二个表单上,我启动一个任务。此表单在关闭时是免费的,我需要使用全局变量来测试是否已分配了此任务,并且未取消该任务,否则由于该任务是免费的,因此会出现异常。
// [...]
type
TfrmTest = class(TForm)
nbRun: TNumberBox;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
FTaskNumber: ITask;
procedure RunTaskNumber;
end;
// [...]
procedure TfrmTest.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Assigned(FTaskNumber) then
FTaskNumber.Cancel;
Action := TCloseAction.caFree;
end;
procedure TfrmTest.FormCreate(Sender: TObject);
begin
FTaskNumber := nil;
end;
procedure TfrmTest.FormShow(Sender: TObject);
begin
RunTaskNumber;
end;
procedure TfrmTest.RunTaskNumber;
begin
FTaskNumber := TTask.Run(procedure
var
i: integer;
begin
i := 0;
while Assigned(FTaskNumber) and (FTaskNumber.Status <> TTaskStatus.Canceled) do
begin
Sleep(2000);
TInterlocked.Increment(i);
if Assigned(FTaskNumber) and (FTaskNumber.Status <> TTaskStatus.Canceled) then
begin
TThread.Queue(nil,procedure
begin
nbRun.Value := i;
end);
end;
end;
end);
end;
end.
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)