방금 첫 번째 다중 스레드 프로그램을 만들었으므로 작동하지 않습니다. 다음은 최소 완성 프로그램입니다. 제가하려고하는 것을 그려 냈습니다.비동기 이벤트가 콘솔에 출력되지 않습니다.
기본적으로 나는 인수를 취하지 않고 문자열을 반환하는 대리인을 만들었습니다. 위의 대리자의 메서드 서명과 일치하는 세 가지 메서드 (FirstMessage
, SecondMessage
및 ThirdMessage
) 세 가지 메서드가 포함 된이 대리자 형식의 이벤트입니다.
마지막으로 이벤트의 각 메서드를 비동기 적으로 실행하고 반환 된 값을 표시하는 메서드 Start
을 만들었습니다. 그러나 프로그램은 아무 것도 출력하지 않습니다. 내가 뭔가를 오해하고 있니? 사전에
using System;
class Program
{
delegate string Message();
static event Message MyMessage;
static string FirstMessage()
{
System.Threading.Thread.Sleep(1000);
return "Message 1";
}
static string SecondMessage()
{
System.Threading.Thread.Sleep(2000);
return "Message 2";
}
static string ThirdMessage()
{
System.Threading.Thread.Sleep(3000);
return "Message 3";
}
static void Start()
{
foreach (Message m1 in MyMessage.GetInvocationList())
{
Message m2 = m1;
m1.BeginInvoke(delegate(IAsyncResult result)
{
string msg = m2.EndInvoke(result);
Console.WriteLine("The message is " + msg + ".");
}, null);
}
}
static void Main()
{
MyMessage += FirstMessage;
MyMessage += SecondMessage;
MyMessage += ThirdMessage;
Start();
}
}
감사 : 여기
코드입니다!
이제 이해합니다. 이 일했다! –