`
hslh22
  • 浏览: 78018 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttr

    博客分类:
  • C#
 
阅读更多

        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        private static void Main(String[] args)
        {
            System.Windows.Forms.Application.EnableVisualStyles();
            System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);

            // Application.Run(new frmMain());

            LoadInit loadInit = new LoadInit();
            loadInit.Load(args);
        }           

 

 

        private void showMainForm()
        {
            System.Threading.Thread t = new
            System.Threading.Thread(new System.Threading.ThreadStart(NewMessageLook));
            // 解决单线程无法调用选择文件对话框问题

            t.SetApartmentState(System.Threading.ApartmentState.STA);  
            t.Start();

            this.Close();
        }

 

 

说明:

红色字体部分是解决问题的关键

 

分享到:
评论

相关推荐

    C#线程间不能调用剪切板的解决方法

    剪切板操作必须在STA线程中进行,因此,我们需要确保我们的线程设置为STA。 解决方法分为三步: 1. **设置线程属性**: 当我们创建一个新的线程并打算在其中操作剪切板时,需要通过`Thread.SetApartmentState()`...

    SWT 使用 OLE 函数调用com控件的资料

    SWT 使用 OLE 函数调用com控件的资料 SWT 使用 OLE 函数调用com控件的资料SWT 使用 OLE 函数调用com控件的资料SWT 使用 OLE 函数调用com控件的资料 SWT 使用 OLE 函数调用com控件的资料

    delphi中提示“尚未调用coinitialize错误”的解决方法.pdf

    CoInitialize是早期版本的COM库初始化函数,它以NULL参数调用,设置线程协同模式为单线程公寓模型(STA,Single Threaded Apartment)。在单线程公寓模型中,一个线程只能拥有一个线程公寓中的对象。对于大多数用户...

    delphi中提示尚未调用coinitialize错误的解决方法.docx

    如果不按顺序进行初始化/解除函数调用,在该单线程单元(STA)里后续的初始化调用将失败,应用程序将无法工作。 解决方法: 1. 在程序初始化时调用 CoInitialize=nil 方法。例如,在使用 ADO 数据库组件时,调用程序...

    Richeditbox中调用OLE

    本篇将详细讲解如何在C#的`RichEditBox`中调用`OLE`来插入`ActiveX`对象。 首先,理解`ActiveX`是微软提出的一种技术,它允许开发者创建可以在不同Windows应用程序间共享的组件。这些组件可以是控件、服务、文档等...

    Go-go-ole-golang的Win32OLE实现

    7. **性能和限制**:虽然`go-ole`为Go提供了与Win32 OLE交互的能力,但由于它是通过接口调用的,可能会有额外的性能开销。此外,`go-ole`只适用于Windows平台,不适用于其他操作系统。 8. **最佳实践**:在使用`go-...

    delphi中提示“尚未调用coinitialize错误”的解决方法.docx

    它将以特定参数调用 CoInitializeEx,并标记协同模式为单线程模式或多线程模式。参数必须为 NULL。在 Delphi 中,CoInitialize 函数通常需要在应用程序的第一个线程中调用,以便正确地初始化 COM 库。 CoInitialize...

    在ActiveX控件中如何动态调用DLL函数之准一体化方法

    在ActiveX控件中动态调用DLL函数是Windows应用程序开发中的常见需求,尤其在使用Visual C++等开发工具时。ActiveX(以前称为OLE控件)是一种组件对象模型(COM),允许开发人员创建可重用的软件组件,而DLL(动态...

    com线程模型详细解释

    如果外界线程和 STA 线程在同一进程内,则代理对象将直接向 STA 线程中的隐藏窗口发送消息;如果不在同一进程内(包括远程进程),代理对象将向 RPC 管理的一个线程池请求一个线程(RPC 服务器)。 COM 线程模型的...

    .NET中OpenFileDialog使用线程报错的解决方法

    在处理OpenFileDialog的线程问题时,需要在创建新线程之前设置线程的ApartmentState属性为STA,以确保新的线程在正确的线程模型下运行。代码示例中通过System.Threading.Thread类创建一个新线程,并将该线程的...

    浏览器控件如何在PB中调用

    设置为`true`时,浏览器控件将进入离线模式,无法加载网络资源。设置为`false`则恢复正常模式。 #### 三、示例代码 以下是一段简单的示例代码,展示了如何在PowerBuilder中使用Web浏览器控件: ```powerbuilder ...

    OLE操作EXCEL之DLL实现(C++)

    9. 调用DLL:在使用DLL时,需要将DLL导入到调用程序中,并通过导出函数与Excel进行交互。这可能涉及到设置库路径,声明函数原型,以及在适当的地方调用这些函数。 10. 性能优化:虽然OLE提供了一种灵活的方法来操作...

    VC平台下基于OLE的Word自动化操作应用

    6. **释放资源**:最后,确保释放所有已分配的资源并清理环境,这包括释放OLE对象和调用`CoUninitialize`函数。 #### 具体实现示例 为了更好地理解上述过程,下面提供了一个简化的代码示例,展示如何使用OLE自动化...

    Java通过Ole调用Windows Media Player

    Java通过Ole调用Windows Media Player是一种常见的技术实践,它允许开发者在Java应用程序中嵌入并控制Windows Media Player(WMP)控件。这一技术主要依赖于Java的Standard Widget Toolkit (SWT)库,它是Java AWT和...

    VC 在ActiveX中动态调用外部DLL函数.rar

    在VC++编程中,ActiveX(也称为OLE控件)是一种强大的工具,它允许开发者创建可以在不同应用程序之间共享的组件。这些组件可以嵌入到Web页面、其他Windows应用程序或者甚至是其他编程环境中。本文将深入探讨如何在...

    delphi中提示尚未调用coinitialize错误的解决方法.pdf

    CoInitialize 函数将以特定参数调用 CoInitializeEx,为当前单元初始化 COM 库,并标记协同模式为单线程模式。参数必须为 NULL。这是关于 OLE 和 COM 的问题。 在 Delphi 中,CoInitialize 和 OleInitialize 的主要...

    稳定、方便、实用的VB6多线程技术(附老马的ActiveX多线程示例)

    微软官方提供了ActiveX EXE组件,这是一种支持多线程的OLE服务器,可以在VB6中创建独立的线程来运行代码。"嗷嗷叫的老马"分享的示例可能就是利用这个组件来创建和管理线程。使用ActiveX EXE,开发者可以创建一个...

    pb11.5调摄像头_pb调用摄像头_pb11.5调用摄像头_

    在PowerBuilder中,创建一个新的OLE对象,然后将它的ClassID设置为摄像头ActiveX控件的CLSID。一旦对象被初始化,你可以通过调用其方法来启动摄像头预览并捕获图像。 2. 使用.NET组件:如果你的系统中安装了.NET ...

    DELPHI7编写OCX控件,WEB成功调用,有窗口,也有函数,可在WEB弹出窗口,WIN10 360浏览器兼容模式下成功通过

    在本案例中,我们探讨的是如何使用DELPHI7创建一个OCX(OLE Control Extension)控件,这是一种可以在不同应用程序之间共享的自定义用户界面元素。OCX控件可以被嵌入到HTML页面中,允许Web应用与本地系统进行交互。 ...

    COM技术内幕+ole.rar

    线程模型决定了COM对象如何在多线程环境中工作,如单线程 apartment(STA)和多线程 apartment(MTA)。延迟绑定允许在运行时确定方法调用,增强了代码的灵活性。 OLE技术是COM的一个重要应用,它支持对象的嵌入和...

Global site tag (gtag.js) - Google Analytics