У меня есть некоторые сомнения в выполнении следующих действий:C# /ASP.NET асинхронное выполнение резьбы
public class Test
{
delegate int TestDelegate(string parameter);
static void Main()
{
TestDelegate d = new TestDelegate(PrintOut);
d.BeginInvoke("Hello", new AsyncCallback(Callback), d);
// Give the callback time to execute - otherwise the app
// may terminate before it is called
Thread.Sleep(1000);
Console.ReadKey(true);
}
static int PrintOut(string parameter)
{
Console.WriteLine(parameter);
return 5;
}
static void Callback(IAsyncResult ar)
{
TestDelegate d = (TestDelegate)ar.AsyncState;
Console.WriteLine("Delegate returned {0}", d.EndInvoke(ar));
}
}
1) TestDelegate уже указывает на метод («распечатке») .Why делать снова мы проходим другой метод («callback») в d.BeginInvoke («Привет», новый AysncCallback (Callback), d) ;. Означает ли это, что d.BeginInvoke выполняет «PrintOut» и «Обратный звонок» параллельно? объясните по строкам, что именно происходит?
2) Обычно Aysnchronous выполнение означает, что выполнение «потока» не предсказуемо или самое быстрое исполнение?
3) TestDelegate d = (TestDelegate)ar.AsyncState;
«TestDelegate» d является делегатом. Как его можно отнести к поданной или собственности? (ar.AsyncState
)
4) Можете ли вы предоставить мне какой-нибудь живой пример, где мне нужно использовать это асинхронное выполнение?