我的应用程序需要在MTA中使用一些COM对象(COM对象将使用UI元素),因此我将我的应用程序定义为MTA:
[global::System.MTAThreadAttribute]
static void Main(string[] args)
{
XamlCheckProcessRequirements();
global::WinRT.ComWrappersSupport.InitializeComWrappers();
global::Microsoft.UI.Xaml.Application.Start((p) =>
{
var context = new global::Microsoft.UI.Dispatching.DispatcherQueueSynchronizationContext(global::Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread());
global::System.Threading.SynchronizationContext.SetSynchronizationContext(context);
new App();
});
}
然而,在定义它之后,我不能在app中的任何TextBox上执行复制粘贴操作。
当我检查Clipboard.SetContent(copyData);
时,它会抛出一个异常:Activating a single-threaded class from MTA is not supported
那么,我该如何解决这个问题呢?
发布于 2022-09-08 04:35:31
你可以这样做。说你TextBox
的名字叫TextBox
DataPackage dataPackage = new()
{
RequestedOperation = DataPackageOperation.Copy
};
_ = this.TextControl.DispatcherQueue.TryEnqueue(() =>
{
dataPackage.SetText(this.TextControl.Text);
Clipboard.SetContent(dataPackage);
});
https://stackoverflow.com/questions/73625474
复制相似问题