首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在WinUI3中使用MTA中的STA函数

在WinUI3中使用MTA中的STA函数
EN

Stack Overflow用户
提问于 2022-09-06 16:57:40
回答 1查看 59关注 0票数 -1

我的应用程序需要在MTA中使用一些COM对象(COM对象将使用UI元素),因此我将我的应用程序定义为MTA:

代码语言:javascript
运行
复制
[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

那么,我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2022-09-08 04:35:31

你可以这样做。说你TextBox的名字叫TextBox

代码语言:javascript
运行
复制
DataPackage dataPackage = new()
{
    RequestedOperation = DataPackageOperation.Copy
};

_ = this.TextControl.DispatcherQueue.TryEnqueue(() =>
{
    dataPackage.SetText(this.TextControl.Text);
    Clipboard.SetContent(dataPackage);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73625474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档