using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
T t = new T();
t.TT();
Console.Read();
}
}
public class T
{
internal delegate string ResolveDelegate(string host);
public bool resultsDisplayed = false;
public void TT()
{
ResolveDelegate synchMethod = new ResolveDelegate(Resolve);
AsyncCallback cb = new AsyncCallback(AsyncCustomCallbackMethod);
// Begin the method's execution...when finished, the callback will be
// called.
IAsyncResult ar = synchMethod.BeginInvoke("12", cb, null);
while (!resultsDisplayed)
{
// For the synchronous options, this will never get executed
// because the results will have been displayed before execution
// reaches this point.
System.Threading.Thread.Sleep(100);
}
}
private void AsyncCustomCallbackMethod(IAsyncResult ar)
{
ResolveDelegate synchMethod = (ResolveDelegate)((System.Runtime.Remoting.Messaging.AsyncResult)ar).AsyncDelegate;
string hostInformation = synchMethod.EndInvoke(ar);
DisplayResults(hostInformation);
resultsDisplayed = true;
}
private void DisplayResults(string hostInformation)
{
Console.WriteLine(hostInformation);
}
private static string Resolve(string host)
{
Thread.Sleep(5500);
return host;
}
}
}