Untitled
unknown
csharp
4 years ago
1.4 kB
8
Indexable
using System;
using System.ComponentModel.Design;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
internal class Program
{
public static void Main(string[] args)
{
var t = MethodAsync();
t.Wait();
Console.ReadKey();
}
private static async Task MethodAsync()
{
Console.WriteLine("Hello world");
string s = await new MyAwaitable();
Console.WriteLine(s);
Console.WriteLine("Bye world");
}
}
public class MyAwaitable
{
public MyAwaiter GetAwaiter()
{
return new MyAwaiter();
}
}
public class MyAwaiter : INotifyCompletion
{
private Action m_continuation;
private bool m_completed;
private Task m_task;
public MyAwaiter()
{
m_completed = false;
m_task = Task.Delay(2000).ContinueWith(t => m_completed = true);
}
public void OnCompleted(Action continuation)
{
m_task.ContinueWith(t => continuation());
m_continuation = continuation;
}
public string GetResult()
{
return "hey";
}
public bool IsCompleted => m_completed;
}
}Editor is loading...