Dim task As Task = Nothing
Sub Button_Click()
' OrElse task.IsCompleted
If task Is Nothing OrElse task.Status = TaskStatus.RanToCompletion Then
task = Task.Factory.StartNew(...)
End If
End Sub
Můžete to udělat takhle, ověřováním reference a případně stavem Tasku. Tento postup je potřeba upravit pro případy, kdy Task skončí chybou (TaskStatus.Canceled, TaskStatus.Faulted), takže tu podmínku budete asi chtít trochu rozšířit a nebo můžete použít vlastnost IsCompleted, která jednoduše řekne, zda Task už doběhl (ať to dopadlo jakkoliv, resp. RanToCompletion, Cancelled nebo Faulted, takže to třeba nedá True pro zatím nespuštěný Task). http://msdn.microsoft.com/en-us/library/... Doporučuji tu vlastnost IsCompleted, ale uvedl jsem záměrně příklad s ověřováním stavu, aby bylo vidět, že těch stavů může být vícero a je třeba to brát v potaz.
|