sta相关内容

这种情况下需要STA消息循环吗?

我有一些 COM 对象正在创建并在 .NET 应用程序的线程上运行.线程被标记为单线程公寓,一切似乎都在工作.我的理解是,如果这些线程尝试从主线程访问 COM 对象,那么这些对象将在 .NET 中自动为我编组和序列化,因此即使在这种情况下,事情也会为我处理,一切安全整洁,尽管可能有点慢. 我的问题是,虽然事情似乎运行良好,但我没有在我正在创建的 STA 线程中注入消息循环.如果可以的话,我宁 ..
发布时间:2022-01-14 11:56:54 C#/.NET

如何将后台工作线程设置为单线程单元?

我正在创建一个自动化测试运行应用程序.在应用程序的这一部分中,我正在处理轮询服务器.它通过不断轮询网络服务器来确定何时应该运行新的自动化测试(用于我们 GUI 应用程序的夜间自动运行). 当轮询服务器看到请求时,它会下载所有必要的信息,然后在后台工作程序中执行测试运行.问题是测试运行的一部分有 OLE、COM 和其他调用(例如,Clipboard.Clear())发生在后台工作线程中.当发生 ..
发布时间:2021-12-17 17:13:41 C#/.NET

单线程单元 - 无法实例化 ActiveX 控件

我需要获取有关在 HTML 页面中应用的 CSS 样式的信息.我使用了 AxWebBrowser 并迭代了 IHTMLDOMNode.我能够获得我需要的所有数据并将代码移动到我的应用程序中.问题是这部分在后台工作程序内部运行,我在尝试实例化控件时遇到异常. AxWebBrowser browser = new AxWebBrowser();ActiveX 控件 '8856f961-340a-11 ..
发布时间:2021-12-17 16:56:06 C#/.NET

在 C# 中启动 STAThread

我对 C# 还是有点陌生​​,尤其是 C# 中的线程.我正在尝试启动一个需要单线程单元的函数(STAThread) 但我无法编译以下代码: 该函数在名为 MyClass 的单独类中如下所示: 内部静态字符串DoX(字符串n,字符串p){//这里做了一些需要 STAThread 的工作} 我已经在函数顶部尝试了属性 [STAThread] 但它不起作用. 所以我试图创建一个新线 ..
发布时间:2021-12-13 20:09:16 C#/.NET

如何在 STA 线程中运行 NUnit 测试?

我们正在将 WPF 应用程序移植到 .NET Core 3,预览版 5.一些 NUnit 测试需要在 STA 线程中运行.这怎么办? [STAThread]、[RequiresSTA]、...等属性都不起作用.这也不起作用:[程序集:RequiresThread(ApartmentState.STA)] 在 .NET Core 3 中似乎没有公开 Apparent 命名空间. 有 ..
发布时间:2021-11-24 14:15:58 C#/.NET

使用 SystemEvents.UserPreferenceChanged 和多个 UI 线程时 UI 冻结

在我的 C# Windows 窗体应用程序中有两个线程: 主线程(Program.cs) WorkerClass 线程(STA 公寓). 当有长时间运行的任务时,它会冻结/卡住整个进程,并且不会触发任何异常或通知......它会挂起应用程序. 内部应用程序仅处理记录(从 SQL 表中选择并插入 Access DB 表中) UI 更新将使用事件操作功能完成. 为卡住的 ..
发布时间:2021-09-27 19:23:25 C#/.NET

如何确定当前过程中COM使用的内部HWND?

我想在过程中将消息直接发布到COM所拥有的HWND.如何获取COM在单线程公寓模式下使用的HWND? 解决方案 尝试一下: HWND prevWindow = NULL; HWND hwnd; for ( ;; ) { hwnd = FindWindowEx( HWND_MESSAGE, prevWindow, L"OleMainThreadWndClass", NULL ) ..
发布时间:2020-07-09 21:52:01 其他开发

间接使用的COM对象的STA或MTA

我想我了解公寓的概念以及为什么要使用STA或MTA,但这是一个问题 到目前为止,我没有找到解决方案. 如果我的应用程序在后台使用COM对象,例如从第三开始 党库,我怎么知道我是否可以使用多线程公寓(MTA)? 在那种情况下,我不知道那些对象是否是线程安全的,所以我需要去 STA,只是为了安全起见? 解决方案 在STA或MTA线程代码上使用某些COM接口指针的能力取决于您是否完全在该线 ..
发布时间:2020-07-09 21:51:58 其他开发

如何告诉线程池在STA线程上运行委托?

我需要一个线程池来处理ASP.NET项目中的COM对象. QueueUserWorkItemSTA(WaitCallback) 解决方案 摘自智能线程池: 还请注意,.NET ThreadPool 不支持通过调用COM 单线程公寓(STA),自 ThreadPool线程是MTA通过 设计. 因此,我想如果您尝试一下智能线程池,它就可以满足您的要求. 就我个人而言,几年 ..
发布时间:2020-07-09 21:50:52 C#/.NET

是首选Powershell -sta(公寓状态)吗?

在过去的几个月中,我一直在研究Powershell(2.0),并且很乐意使用它来对工作中的某些过程进行现代化和标准化,主要是基于DOS的过程.由于工作的性质,一次执行大约100次相同脚本的执行. 首先-以这种方式使用Powershell是否安全?我已经将-STA视为执行选项-是同时执行大量相同脚本时使用Powershell的首选方法,还是仅在绝对必要时才使用的东西?在搜索中,我并没有真正想到 ..
发布时间:2020-07-09 21:50:48 其他开发

调用线程必须是STA,因为在WPF中许多UI组件都需要此错误.在form.show()

首先,我已经在网站上阅读了一些类似问题的答案,但是老实说,我发现它们有些混乱(由于我缺乏经验,而不是答案!).我正在使用FileSystemWatcher()类来监视文件夹中是否有正在创建/更改的文件.事件一旦发生,我便想在项目中加载另一个表单.当新表单上的构造函数尝试执行时,我没有加载表单,而是得到了错误.我仅使用一个线程-我没有尝试在其他线程下加载表单.我的代码如下 //MainWin ..
发布时间:2020-07-09 21:50:46 C#/.NET

有没有办法以编程方式将ApartmentState设置为STA?

我正在PowerShell中的GUI上工作,单击某些组合框时会抛出错误. 引发错误后,我可以将组合框列表放下并查看其内容,但是如果我移到同一datagridview上的另一个combox,则在看到下拉列表之前会遇到相同的初始错误. 我在TechNet PowerShell论坛上发布了此内容,并获得了在单线程单元(STA)中运行GUI所需的答案.默认情况下,PowerShell在MTA中 ..
发布时间:2020-07-09 21:50:44 C#/.NET

为什么WPF要求将STAThread属性应用于Main方法?

我是WPF的新手,在阅读的每个教程中,他们要么将[System.STAThread]属性应用于其Main方法,要么告诉读者这样做. 这个属性真的是“必需的"吗?如果是这样,为什么? 解决方案 这是Windows的要求,而不是WPF的要求,并且从.NET追溯到Windows窗体和控件的原始设计. STAThread是指“单线程单元",它是指当前(主)线程使用的线程模型.使用的线程 ..
发布时间:2020-07-09 21:49:37 其他开发

如何在STA线程中运行NUnit测试?

我们正在将WPF应用程序移植到.NET Core 3,预览版5。 一些NUnit测试需要在STA线程中运行。 [STAThread],[RequiresSTA]等属性都没有作用。 这也行不通:[assembly:RequiresThread(ApartmentState.STA)] .NET Core 3中似乎没有公开表观命名空间。 有人这样做吗? 解决方案 Apar ..
发布时间:2020-05-31 20:22:26 C#/.NET

无法使用与其父级Freezable属于不同线程的DependencyObject

在开发WPF应用程序时遇到了一个问题. 该应用程序基于Prism. 该应用程序使用棱镜引导程序和 在加载任何窗口之前,该应用会在其他线程(STA)上打开一个模式对话框, 然后加载一堆东西(服务等) 该对话框在此期间处于打开状态,并允许用户通知应用程序启动过程的进度(使用事件聚合器传递更新). 加载完成后,引导程序将关闭对话框并打开主应用程序窗口. 到目前为止一切顺利... 然后,当关闭应用程序时, ..
发布时间:2020-05-14 00:34:06 C#/.NET

是否可以使两个COM STA实例具有相同的组件?

我有一个问题在这里的另一个线程上发现 ,我需要访问一个STA的COM组件.我将在双核计算机上运行它,使用此组件的进程只能达到50%的CPU.不幸的是,所有者表示他们无法将组件更改为MTA,因为该组件是在Matlab上编译的混合系统,其核心是C. 因此,我尝试在同一进程上加载COM类的两个实例,不同的线程访问它,但是我不能,只有最后一个COM实例可用.你知道什么可以解决这个问题吗? 我正 ..
发布时间:2020-05-14 00:12:15 C#/.NET

与MTA线程相比,STA线程有哪些局限性?

如果我们这样创建线程STA:Thread.SetApartmentState(STA);,则它无法运行标有[MTAThread]属性的代码. 我们已经在Windows和控制台应用程序中看到[STAThread],但是我从未见过具有[MTAThread]属性的代码,并且不知道哪个.NET库使用此属性. 我的问题是,与具有MTA公寓状态(自然的.NET线程)的线程相比,将公寓状态设置为ST ..
发布时间:2020-05-13 22:28:08 C#/.NET