我越來越: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());
}
嘗試'var disp = Window.Current.Dispatcher;' –
同樣的效果:(沒有錯誤,但應用程序停止。 – Timur
沒有錯誤,但應用程序停止了?沒有異常?和應用程序崩潰? –