【发布时间】:2015-10-07 01:01:27
【问题描述】:
我正在尝试在后台任务中将内容添加到剪贴板,但无法正常工作。这是我的代码:
var dataPackage = new DataPackage { RequestedOperation = DataPackageOperation.Copy };
dataPackage.SetText("EUREKA!");
Clipboard.Flush();
Clipboard.SetContent(dataPackage);
我收到错误消息:
不支持从 MTA 激活单线程类 (来自 HRESULT 的异常:0x8000001D)System.Exception {System.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 以将某些内容放在剪贴板上。