我在我想从其他类订阅的类中创建了一个静态事件。
public class PlaylistModel
{
public static event EventHandler PlaylistLoadError;
public static void LoadPlaylist()
{
try
{
// ...do some stuff...
}
catch(SomeException ex)
{
EventHandler handler = PlaylistLoadError;
if(handler != null)
{
PlaylistLoadError(null, null);
}
}
}
}
在我的另一堂课上......
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
PlaylistModel.PlaylistLoadError += PlaylistError;
}
public void PlaylistError(object sender, EventArgs args)
{
//... show the error ...
}
}
在 catch 内部,handler 为 null,尽管它已被订阅。我MainPage
在 catch 执行后从内部调试了程序,并且PlaylistLoadError
显示为不为空。任何想法为什么它会在内部为空PlaylistModel
,但在其他任何地方都没有?我有一种感觉,这与它是静态的有关。