2015-05-06 25 views
1

我越來越:Window.Current.Activate()結果爲「應用程序調用了被編組爲另一個線程的接口」。

應用程序調用這是整理了 不同的線程的接口。

error error on line 「Window.Current.Activate();」當按下手機上的「windows」按鈕(暫停應用程序),然後從應用程序列表中再次啓動它。如果我按「windows」按鈕,然後「返回」按鈕返回到應用程序 - 沒問題。 另外,我第一次運行應用程序時沒有問題。

如果應用程序在啓動按鈕後無法恢復,下次從頭開始工作正常,直到我按「窗口」,然後嘗試再次啓動應用程序。

我也試過:

var disp = Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher; 
disp.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
      Window.Current.Activate()); 

然後應用程序無法繼續,雖然不會發生錯誤。 我在應用程序中做什麼: 我有一個堆棧面板,我通過c#代碼添加元素。這部分我也嘗試與調度員,但它沒有幫助。

我也讀取/寫入文件異步。也許這也有幫助。

如果您可以幫助我簡單地關閉應用程序而不是掛起,儘管它不是最好的解決方案,但它仍然可以幫助我。謝謝!

更新: 下面是函數的全碼:

protected override void OnLaunched(LaunchActivatedEventArgs e) 
    { 
#if DEBUG 
     if (System.Diagnostics.Debugger.IsAttached) 
     { 
      DebugSettings.EnableFrameRateCounter = true; 
     } 
#endif 

     Frame rootFrame = Window.Current.Content as Frame; 

     // Не повторяйте инициализацию приложения, если в окне уже имеется содержимое, 
     // только обеспечьте активность окна 
     if (rootFrame == null) 
     { 
      // Создание фрейма, который станет контекстом навигации, и переход к первой странице 
      rootFrame = new Frame(); 

      // TODO: Измените это значение на размер кэша, подходящий для вашего приложения 
      rootFrame.CacheSize = 1; 

      // Задайте язык по умолчанию 
      rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0]; 

      if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) 
      { 
       // TODO: Загрузить состояние из ранее приостановленного приложения 
      } 

      // Размещение фрейма в текущем окне 
      Window.Current.Content = rootFrame; 
     } 

     if (rootFrame.Content == null) 
     { 
      // Удаляет турникетную навигацию для запуска. 
      if (rootFrame.ContentTransitions != null) 
      { 
       this.transitions = new TransitionCollection(); 
       foreach (var c in rootFrame.ContentTransitions) 
       { 
        this.transitions.Add(c); 
       } 
      } 

      rootFrame.ContentTransitions = null; 
      rootFrame.Navigated += this.RootFrame_FirstNavigated; 

      // Если стек навигации не восстанавливается для перехода к первой странице, 
      // настройка новой страницы путем передачи необходимой информации в качестве параметра 
      // навигации 
      if (!rootFrame.Navigate(typeof(MainPage), e.Arguments)) 
      { 
       throw new Exception("Failed to create initial page"); 
      } 
     } 

     // Обеспечение активности текущего окна 
     //if (e.PreviousExecutionState != ApplicationExecutionState.Running) 
     //Dispatcher.Invoke((Action)(() => messageList.Add(read))); 
     //var disp = Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher; 
     var disp = Window.Current.Dispatcher; 
     disp.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
      Window.Current.Activate()); 
    } 
+3

嘗試'var disp = Window.Current.Dispatcher;' –

+0

同樣的效果:(沒有錯誤,但應用程序停止。 – Timur

+0

沒有錯誤,但應用程序停止了?沒有異常?和應用程序崩潰? –

回答

0

我抄了完整的代碼到一個新的樞紐工程(以前我開始一個空白的Windows Phone項目)。現在它可以工作,但我沒有改變任何東西。

謝謝大家的幫助!

相關問題