- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我在 .NET 中有一个 STA 线程,并且我在该线程中创建了一个 STA COM 对象,然后该线程结束——这是否会杀死该对象的实例?
我的理解是否正确,STA COM 对象可以被多个线程访问并且运行时将自动编码对所有发生在公寓线程中的调用?该线程是创建实例的线程吗?因此,如果该线程完成,该实例将孤立并丢失?或者是否为 STA 实例创建了单独的线程?
这如何在 ASP.Net 中使用 ASPCompat=True 进行?我的理解是每个请求都由一个随机的工作线程处理,如果我的 STA 组件被放入 session 中,它是否会随机死亡,因为创建它的请求处理器线程可能已经完成?
最佳答案
如果您在 .NET STA 线程上创建 STA COM 对象,则对您的对象的所有调用都将编码到该线程。
如果您在 .NET MTA 线程上创建 STA COM 对象,则运行时将创建一个 STA 线程并编码对该线程的所有调用。
因此,当您的 (STA) 线程存在时,您的 COM 对象将无法访问。
一种解决方案可能是在您可以控制其生命周期的新线程上创建对象。
我做过类似的事情:
using (ManualResetEventSlim mre = new ManualResetEventSlim(false))
{
Thread _STAThread = new Thread(new ThreadStart(() =>
{
globalComObject = new ComClass();
mre.Set();
try
{
Thread.CurrentThread.Join();
}
catch (ThreadAbortException)
{
}
}));
_STAThread.SetApartmentState(ApartmentState.STA);
_STAThread.IsBackground = true;
_STAThread.Start();
mre.Wait();
}
关于.net - COM 互操作 .NET STA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4430869/
我必须将.NET应用程序作为插件包含到另一个.NET应用程序中。插件界面要求我从模板表单继承。然后,在加载插件时,将表单附加到MDI中。 到目前为止,一切正常,但是每当我注册拖放事件时,都为组合框设置
我有一个必须作为 STA 运行的函数,我想将它的异常传播到调用线程。在这里: public void ExceptionBePropagatedThroughHere() { Thread thr
我正在将一个线程初始化为静态线程,如下所示 Thread GenerateKeywords; private void btnStart_Click(object sender, EventArgs
我们正在 AZURE 上开发“ Multi-Tenancy 应用程序” (MTA)。此外,我们为通过 REST API 端点利用 MTA 数据的客户开发“单租户应用程序”(STA),即可以在任何地方托
我从 GUI 线程调用这个函数: let updateImageLoop (pprocess : PlotProcess) (target : IUpdatableImageView) = a
我有一个类,当某些操作的状态发生变化时,它应该向用户显示一些消息,如下所示: public static class AutoUpdater { public static a
我有一个 BackgroundWorker 调用函数在 BackgroundWorker _DoWork 做一个长进程,当函数发生错误时我会提示一个自定义的消息框: WPFMessageBoxRes
我一直在尝试一些最终可能变成不可能的事情。自从我进入 COM 领域以来已经有很长一段时间了。 考虑两个应用程序和一个 COM STA DLL。第一个应用程序将 COM STA DLL 作为插件加载,此
这个问题在这里已经有了答案: How to create a task (TPL) running a STA thread? (2 个答案) 关闭 8 年前。 我正在 VS2010 中开发 VST
我正在尝试创建 COM 组件,它会经常被 excel 应用程序调用(excel 将在其初始化时加载 COM)并且另一个进程(比如 procA)也会(以高频率)发送 windows 消息到这个组件。目前
所以,关注 this ,我决定在专用 STA 线程上显式实例化一个 COM 对象。实验表明 COM 对象需要一个消息泵,这是我通过调用 Application.Run() 创建的: private M
我有这个遗留的第三方 COM DLL。我将其注册到注册表并将 RCW 添加到我的 .NET/C# 控制台应用程序。注册表将 COM 的线程模型 显示为单元。我的应用程序的全部目的是使用多线程并发提交多
我有一个小的 c# 类需要公开为 COM。将使用 COM 对象的工具要求我支持 STA。我需要对 COM 对象做些什么特别的事情吗? (我知道 STAThread 属性,但是(除非我错了)它用于指示
在我的 WPF 应用程序中,我进行了一些异步通信(与服务器)。在回调函数中,我最终根据服务器的结果创建了 InkPresenter 对象。这要求正在运行的线程是 STA,而目前显然不是。因此我得到以下
如果我在 .NET 中有一个 STA 线程,并且我在该线程中创建了一个 STA COM 对象,然后该线程结束——这是否会杀死该对象的实例? 我的理解是否正确,STA COM 对象可以被多个线程访问并且
我正在 PowerShell 中处理 GUI,当单击某些组合框时我会抛出错误。 抛出错误后,我可以放下组合框列表并查看其内容,但是如果我切换到同一个 datagridview 上的另一个组合框,我会在
在过去的几个月中,我一直在尝试使用Powershell(2.0),并且很乐意使用它来对一些正在使用的进程进行现代化和标准化-大多是基于DOS的进程。由于工作的性质,一次执行大约100次相同脚本的执行。
谁能解释一下 LDA、ROL、STA 给出的每条指令的确切结果是什么? C=1 (carry flag is 1) LDA A #$08 0008 | 01 ROL A 0009 | 02
我是一名硕士生,我正在通过 STATISTICA 程序学习统计学类(class)。我对 R 比较熟悉,并想坚持下去。所以我打算在 R 中做提供的练习。但是要使用的数据格式为 *.sta... 有没有办
我试图让 Watin 在我的 SSIS 脚本任务中工作,通过在新线程中打开 IE 来执行一些自动化操作,做一些事情,找到最终值并基本上在父线程中返回/设置该值。 所以我现在有这个: public pa
我是一名优秀的程序员,十分优秀!