我想在后台任务中将内容添加到剪贴板,但是我无法让它工作。这里是我的代码:在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把一些东西放在剪贴板上。 –