`
hslh22
  • 浏览: 78620 次
  • 性别: 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(动态...

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

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

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

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

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

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

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

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

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

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

    PB调用 URL

    标题 "PB调用 URL" 涉及到的是在PowerBuilder (PB) 10.5版本中如何利用OLE(对象链接与嵌入)技术来调用URL,并传递参数。这是一个针对初学者的实例,旨在解释如何在PB环境中实现与Web服务或网页的交互。 在PB10.5...

    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应用程序或者甚至是其他编程环境中。本文将深入探讨如何在...

    利用PowerBuilder实现对IE浏览器的调用与控制

    为了确保程序的健壮性,可以在关键操作处加入错误处理代码,例如: ```pb try ole_ie.object.Navigate(ls_url) catch any MessageBox("错误", "无法导航到指定页面:" + ls_url, MB_OK | MB_ICONERROR) end try `...

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

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

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

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

Global site tag (gtag.js) - Google Analytics