0

假设我有一个名为 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 实现中做错了什么?

4

1 回答 1

0

我想要做的是不可能的,当从非 UI 线程初始化 TestClass 时,应用程序的行为符合预期。起始页可见/已加载,并且在 CoreWindow.Dispatcher.RunAsync lambda 可以在 UI 线程上执行之前触发 VisibilityChanged 事件。我的 VisibilityChanged 处理程序将能够捕获除第一个可见性更改之外的所有可见性更改。

于 2013-09-05T14:03:41.560 回答