假设我有一个名为 ClassLibrary 的 Windows 应用商店类库,其中包含 TestClass:
public class TestClass
{
public TestClass()
{
coreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
CoreWindow coreWindow = CoreApplication.MainView.CoreWindow;
coreWindow.VisibilityChanged +=
(sender, args) =>
{
Debug.WriteLine(args.Visible ? "Foreground" : "Background");
};
});
}
}
当 Windows 应用商店应用程序使用该库时,应该能够从 UI 和非 UI 线程初始化 TestClass:
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
var rootFrame = Window.Current.Content as Frame;
TestClass libraryClass;
// Non-UI thread
Task.Run(() => { libraryClass = new TestClass(); });
// OR UI thread
libraryClass = new TestClass();
}
不幸的是,当从非 UI 线程初始化 TestClass 时,不会触发 coreWindow.VisibilityChanged 事件。当从主 UI 线程初始化 TestClass 时会这样做。
我在 TestClass 实现中做错了什么?