我有一個函數可以爲發票計算生成35個任務。在asp.net取消任務
我的代碼:
public int CalcGroup()
{
try
{
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken ct = cts.Token;
for (int i = 0; i < 35 ; i++)
{
var myTask = new Task<long>(() => CalcSingle(_personnelIds.Item1), ct, TaskCreationOptions.LongRunning);
myTask.Start();
}
}
catch (Exception)
{
return 0;
}
return 1;
}
「CalcSingle()是它的工作任務,另一個功能。」 和我的事件取消的任務是:
protected void btnStopCalc_Click(object sender, EventArgs e)
{
CancellationTokenSource cts = new CancellationTokenSource();
cts.Cancel();
}
它不能正常工作
你正在創建一個新的對象,並調用Cancel而不是實際的? –
是啊,我的功能在DAL層,並通過UI取消通話。 這不可能嗎? –
您需要存儲可以在其上調用Cancel的cts。作爲一個領域。然後,您不要在您的點擊處理程序中使用新的CancellationTokenSource,而是使用該字段。 –