我是新的任務工作,需要幫助。 我有一個網絡服務,爲什麼在任務工廠中使用ASYNC - AWAIT?
此服務將停止所有任務,並在每30分鐘重新開始。
Q1 =是否爲常規代碼樣本?
Q2 =該代碼適用於我,但是我需要在此項目中使用ASYNC AWAIT ?我使用.net 4.0。
Thx。
private CancellationTokenSource tokenSource;
private List<Task> Tasks;
public virtual void Start()
{
// start
Tasks = new List<Task>();
tokenSource = new CancellationTokenSource();
for (int i = 0; i < 3; i++)
{
Tasks.Add(Task.Factory.StartNew(() => SomeWork(),
tokenSource.Token,
TaskCreationOptions.LongRunning,
TaskScheduler.Default));
}
}
public void Stop()
{
tokenSource.Cancel();
Task.Factory.ContinueWhenAll(Tasks.ToArray(), t =>
{
Console.WriteLine("all finished");
// start again
Start();
});
}
int i = 0;
public void SomeWork()
{
while (!tokenSource.IsCancellationRequested)
{
try
{
Thread.Sleep(1000 * 4);
Console.WriteLine(Task.CurrentId + " finised!");
}
catch (Exception) { }
}
}
你並不需要使用異步/ AWAIT - 事實上,你不能使用異步/等待着.NET 4中,這樣的問題是沒有實際意義。 –
我知道異步/等待可以用某種方式在.net 4.0中使用,但問題是我真的需要其實我不知道 – Mennan
是的,你不需要*使用它;這只是一種簡化異步編程的方法。我假設'Thread.Sleep(1000 * 4);'只是模擬一些無法在幾秒鐘內取消的代碼的一種方式。 –