i m новый в задачах задания и должен помочь. У меня есть веб-сервис,Зачем использовать 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 - на самом деле, вы не можете использовать асинхронный/Await с .Net 4, так что вопрос спорный. –
Я знаю, что async/await можно использовать в .net 4.0 в некотором роде, но вопрос действительно мне нужен, я действительно не знаю – Mennan
Да, вам не нужно * использовать его; это просто способ упростить асинхронное программирование. Я предполагаю, что 'Thread.Sleep (1000 * 4);' является всего лишь способом эмуляции некоторого кода, который нельзя отменить на несколько секунд. –