Существует метод Async FuncAsync
и объект Task t. Оба делают то же самое, используя пул потоков. В чем разница между этими двумя стратегиями?Async Task vs Task
class Program
{
private static async Task<int> FuncAsync(string str)
{
string s = await Task.Run(() =>
{
Console.WriteLine("{0} <- Pooled? ID -> {1}", Thread.CurrentThread.IsThreadPoolThread, Thread.CurrentThread.ManagedThreadId);
// Thread.Sleep(1000);
return str;
});
return s.Length;
}
public static void Main(string[] args)
{
Task<int> z = FuncAsync("Text");
Console.WriteLine(z.Result);
Task<int> t = Task.Run(() =>
{
Console.WriteLine("{0} <- Pooled? ID -> {1}", Thread.CurrentThread.IsThreadPoolThread, Thread.CurrentThread.ManagedThreadId);
// Thread.Sleep(1000);
return "Text".ToString().Length;
});
Console.WriteLine(t.Result);
Thread.CurrentThread.Join(1000);
Console.ReadLine();
}
}
Я думаю, что с помощью метода асинхронного ждет результата и не может быть близки без финишной задачи, и задачи - нити фон и может быть закрыт без финишной задачи.
Не так много, за исключением того, что у вас есть анонимный метод и больше сантехники в случае 'Задачи'. – Mrchief
Похоже, вам просто нужно прочитать вступительное руководство по 'async/await'. – Servy
@Servy Я так думаю)) –