Windows 运行时从其他库引发事件
Windows Runtime raise events from other library
我有一个库 A,它有一些事件,我在我自己的库 B 中使用这个库,然后我有我的 Windows 运行时应用程序,它只引用了库 B。
当库 A 引发事件时,我想在我的 Windows 运行时应用程序项目中捕获此事件。
有办法吗?
您可以在 Windows 运行时应用程序中引用库 A,因为库 B 需要它。
或者您可以将事件包装在 B 中。看这里:
class Program
{
public static void Main(string[] args)
{
// Register at B
BLibClass.BEvent += MyMethod;
// Something triggers A
BLibClass.ATrigger();
Console.ReadKey();
}
public static void MyMethod()
{
System.Console.WriteLine("Something happeneds!");
}
}
这里是 A 库:
public class ALibClass
{
public delegate void HandleAEvent();
public static event HandleAEvent AEvent;
public static void ATrigger()
{
AEvent();
}
}
这里是B库:
public class BLibClass
{
public delegate void HandleBEvent();
public static event HandleBEvent BEvent;
private static void WhenAHappens()
{
BEvent();
}
static BLibClass()
{
ALibClass.AEvent += WhenAHappens;
}
public static void ATrigger()
{
ALibClass.ATrigger();
}
}
我有一个库 A,它有一些事件,我在我自己的库 B 中使用这个库,然后我有我的 Windows 运行时应用程序,它只引用了库 B。
当库 A 引发事件时,我想在我的 Windows 运行时应用程序项目中捕获此事件。
有办法吗?
您可以在 Windows 运行时应用程序中引用库 A,因为库 B 需要它。
或者您可以将事件包装在 B 中。看这里:
class Program
{
public static void Main(string[] args)
{
// Register at B
BLibClass.BEvent += MyMethod;
// Something triggers A
BLibClass.ATrigger();
Console.ReadKey();
}
public static void MyMethod()
{
System.Console.WriteLine("Something happeneds!");
}
}
这里是 A 库:
public class ALibClass
{
public delegate void HandleAEvent();
public static event HandleAEvent AEvent;
public static void ATrigger()
{
AEvent();
}
}
这里是B库:
public class BLibClass
{
public delegate void HandleBEvent();
public static event HandleBEvent BEvent;
private static void WhenAHappens()
{
BEvent();
}
static BLibClass()
{
ALibClass.AEvent += WhenAHappens;
}
public static void ATrigger()
{
ALibClass.ATrigger();
}
}