长话短说,我有两个布尔变量,分别称为 FirstBool 和 SecondBool。我有一个程序,它使用两个委托来异步运行两种方法。我Console.ReadLine()
用来在子线程运行时使父线程保持活动状态。
当第一个方法完成时,FirstBool 设置为 true。当第二个方法完成时,SecondBool 设置为 true。
长话短说,我想将我的事件定义为“FirstBool
并且SecondBool
都是真的”,并在此时关闭我的程序。我能看到的唯一选择是轮询两个布尔值,直到它们都为真,然后关闭程序,轮询很糟糕。
我的代码如下:
class Program
{
private delegate void MyDelegate();
private static bool FirstBool { get; set; }
private static bool SecondBool { get; set; }
static void Main(string[] args)
{
FirstBool = false;
SecondBool = false;
MyDelegate firstDelegate = new MyDelegate(FirstMethod);
MyDelegate secondDelegate = new MyDelegate(SecondMethod);
AsyncCallback myCallback = new AsyncCallback(CallbackMethod);
firstDelegate.BeginInvoke(myCallback, "Zip");
secondDelegate.BeginInvoke(myCallback, "Line");
Console.ReadLine();
}
private static void CallbackMethod(IAsyncResult result)
{
switch (result.AsyncState.ToString())
{
case "Zip":
FirstBool = true;
break;
case "Line":
SecondBool = true;
break;
}
Console.WriteLine("Callback Method");
}
private static void FirstMethod()
{
Console.WriteLine("First Method");
}
private static void SecondMethod()
{
Console.WriteLine("Second Method");
}
}
所以,长话短说,我如何创建一个定义为“FirstBool
是真的并且SecondBool
是真的”的事件并在这个事件发生时运行一个方法?
谢谢