我想在後臺任務中將內容添加到剪貼板,但是我無法讓它工作。這裏是我的代碼:在Cortana後臺任務中設置剪貼板內容
var dataPackage = new DataPackage { RequestedOperation = DataPackageOperation.Copy };
dataPackage.SetText("EUREKA!");
Clipboard.Flush();
Clipboard.SetContent(dataPackage);
我得到的錯誤信息:
從MTA激活單線程不支持此類 (從HRESULT異常:0x8000001D)的System.Exception {系統。 Runtime.InteropServices.COMException}
我發現了一個similar question with a Notification and not Cortana但提出的解決方案:
private async Task CopyToClipboard(string strText)
{
CoreDispatcher dispatcher = CoreWindow.GetForCurrentThread().Dispatcher;
await dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
var dataPackage = new DataPackage { RequestedOperation = DataPackageOperation.Copy };
dataPackage.SetText("EUREKA!");
Clipboard.SetContent(dataPackage);
getText();
});
}
private async void getText()
{
string t = await Clipboard.GetContent().GetTextAsync();
}
拋出一個System.NullReferenceException
Cortana的BackgroundTaskHost可能永遠無法訪問可用於分派到UI線程的CoreWindow,因爲它從不繪製自己的UI(它只能向Cortana發送請求來代表它) 。你需要激活你的應用程序,並讓它操縱它的CoreWindow把一些東西放在剪貼板上。 –