当前线程不在单线程单元中,因此无法实例化 ActiveX 控件

 

 

“/”应用程序中的服务器错误。

当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“c552ea94-6fbb-11d5-a9c1-00104bb6fc1c”。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Threading.ThreadStateException: 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“c552ea94-6fbb-11d5-a9c1-00104bb6fc1c”。

源错误: 


行 17: {
行 18:     MapManager m_pMapManager;
行 19:     ESRI.ArcGIS.Controls.AxMapControl MapCtrl = new AxMapControl();
行 20: 
行 21:     List<IPoint> m_ArrCutLinePoints = new List<IPoint>();  
源文件:      行: 19 

堆栈跟踪: 


[ThreadStateException: 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“c552ea94-6fbb-11d5-a9c1-00104bb6fc1c”。]
   System.Windows.Forms.AxHost..ctor(String clsid, Int32 flags) +3705969
   System.Windows.Forms.AxHost..ctor(String clsid) +11
   ESRI.ArcGIS.Controls.AxMapControl..ctor() +57
   
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
   System.Web.UI.Control.OnLoad(EventArgs e) +95
   System.Web.UI.Control.LoadRecursive() +59
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678

 

在aspx  page标签中添加 

AspCompat="true"

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"  AspCompat="true"%>

 

转载于:https://www.cnblogs.com/Leechg/p/6501166.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
相关网站 7 设置窗口最大最小 7 设置窗口标题 7 去掉主菜单 7 修改应用程序图标 7 系统只能允许一个程序运行 7 在状态栏添加时间 8 研究调用存储过程 8 得到本机的IP地址 9 vc调用chm文件 10 最高窗口的现 10 防止Edit框的Password不保密 11 在同一系统显示GB字符和BIG5字符 12 改变颜色(整个窗体的控件) 13 改变工程表头栏 13 ◆如何找开一个DiaLog的窗口◆ 13 ◆得到系统设置的窗口颜色◆ 14 ◆如何让点下去的菜单成为V状态◆ 14 ◆如何调用WINDOWS的颜色板◆ 14 ◆如何产生一个MDI的主窗口◆ 15 ◆如何让一个文本控件显示出值◆ 15 ◆如何让一个控件显示出相应的值◆ 16 ◆在调试怎么样MESSAGEBOX一个数字◆ 16 ◆如何控制控件的焦点◆ 16 ◆如何对析构函数对象进行释放◆ 16 ◆如何关闭一个模态窗口◆ 17 ◆如何将一个提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立一个工具条◆ 17 ◆如何生成一个主窗口下方的状态条◆ 18 ◆如何让Cscrollview类控制其可以流动区域大小◆ 19 ◆MFC控件的一些基本控制方法◆ 19 ◆如何让一个数字型变量化为字符型变量◆ 19 ◆如何使用“拉动条”,“上下选择”◆ 19 ◆如何使用postmessage来异步触发某事件◆ 21 ◆如何使用Sendmessage来异步触发某事件◆ 22 ◆如何修改父类的相关控件属性◆ 22 ◆如何在程序得到控件的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何使用控件的数据录入的控制属性◆ 23 ◆哪些函数是文档、视图相互处理用的◆ 23 ◆如何建立一个基于对话框一程序◆ 23 ◆如何建立一个线程◆ 24 ◆如何让窗口产生一个图标(从应用程序资源取出)◆ 24 ◆如何得到一个edit的录入的值◆ 24 ◆如何启动TIMER事件◆ 25 ◆如何使用ctrllist控件现表格◆ 25 ◆如何从INI文件得到值◆ 25 ◆如何将图标文件写到窗口◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何使用全局变量◆ 26 ◆如何让一个字符加上回车、换行◆ 26 ◆如何定义、使用结构◆ 26 ◆如何在任意程序显示MessageBox◆ 27 ◆如何在程序判断出debug状态◆ 27 ◆当对话框有一个滚动条是,当滚动滚动条时的消息控制函数◆ 27 ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话框自定义一个消息的方法,假设对话框名为CXX◆ 28 ◆消息传递◆ 29 ◆在一个函数引用另外的一个对话框◆ 29 ◆全局函数的申明问题◆ 29 ◆在应用程序*APP.CPP的InitInstance()的事件◆ 29 ◆给执行文件加一个图标◆ 30 ◆如何在全局函数通过传入的窗口句柄操作窗口◆ 30 ◆如何使桌面文字背景透明?◆ 30 ◆怎样才能在VC里产生一个唯一的字符串◆ 31 ◆如何隐藏进程(在系统状态栏和进程列表里不可见)◆ 31 ◆如何得到一个确定大小的视?◆ 31 ◆如何现点击窗口任意地方拖动窗口?◆ 32 ◆如何在启动时阻止MDI应用程序创建一个新文档?◆ 33 ◆如何在多文档MFC程序制作独立的File|New菜单?◆ 33 ◆如何检测视是否处于分割状态?◆ 34 ◆如何使程序保持极小状态?◆ 34 ◆如何确定当前进程例是否为唯一例?◆ 35 ◆如何向一个文档附加多个视?◆ 35 ◆如何获得文件的图标、属性、大小、类型等参数?◆ 36 ◆如何得到鼠标下面的窗口?◆ 37 ◆设置鼠标的形状◆ 38 ◆在对话框设置编辑EDIT的值◆ 38 1. 如何获取应用程序的例句柄? 38 2. 如何通过代码获得应用程序主窗口的指针? 38 3. 如何在程序获得其他程序的图标? 38 4. 如何编程结束应用程序?如何编程控制windows的重新引导? 39 5.怎样加载其他的应用程序? 39 6. 确定应用程序的路径 39 7. 获得各种目录信息 40 8. 如何自定义消息 40 9. 如何改变窗口的图标? 40 10. 如何改变窗口的 缺省风格? 40 11. 如何将窗口居显示? 41 12. 如何让窗口和 MDI窗口一启动就最大化和最小化? 41 13. 如何使程序保持极小状态? 41 14. 如何限制窗口的 大小? 41 15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建一个字回绕的CEditView 42 18、通用控件的显示窗口 42 19、移动
### 回答1: 在Qt创建单线程例类,可以通过继承QObject类并重写run()函数来现。 首先,我们创建一个继承自QObject的子类,命名为MyThread。在MyThread类的头文件,声明一个私有的QThread成员变量,以及一个run()函数的重载。 ```cpp #ifndef MYTHREAD_H #define MYTHREAD_H #include <QObject> #include <QThread> class MyThread : public QObject { Q_OBJECT public: explicit MyThread(QObject *parent = nullptr); void start(); void stop(); signals: void finished(); private: QThread m_thread; private slots: void run(); }; #endif // MYTHREAD_H ``` 在MyThread类的现文件,我们可以在构造函数将m_thread设置为子线程,并将自身对象移到该线程执行。 ```cpp #include "mythread.h" MyThread::MyThread(QObject *parent) : QObject(parent) { moveToThread(&m_thread); } void MyThread::start() { m_thread.start(); } void MyThread::stop() { m_thread.quit(); m_thread.wait(); } void MyThread::run() { // 在这里进行单线程的运算或操作 emit finished(); } ``` 通过这种方式创建的MyThread类,可以被当作一个普通的QObject对象使用。可以调用start()函数来开始运行单线程的操作,调用stop()函数来停止线程的执行。 在Qt主线程,可以通过连接MyThread对象的finished信号来获知操作已经完成。 ### 回答2: 在Qt,可以通过继承QObject类并在该类创建一个单独的线程例来单线程的功能。 首先,在例类添加一个成员变量用于存储线程例: ```cpp QThread* m_thread; ``` 然后,在例类的构造函数创建该线程例,并将对象移动到该线程: ```cpp m_thread = new QThread(this); this->moveToThread(m_thread); ``` 接下来,在例类的析构函数释放线程资源: ```cpp m_thread->quit(); m_thread->wait(); delete m_thread; ``` 最后,在例类添加一个槽函数,用于处理单线程执行的具体逻辑: ```cpp void MyObject::run() { // 执行单线程逻辑 } ``` 在际使用时,可以通过信号槽机制将其他对象的信号与此槽函数连接起来,触发单线程的执行: ```cpp MyObject myObject; QTimer::singleShot(0, &myObject, SLOT(run())); ``` 以上就是在Qt例类创建一个单线程的方法。通过使用QThread类和信号槽机制,可以现简单而有效的单线程执行。 ### 回答3: 在QT创建一个单线程可以通过以下步骤现: 1. 首先,我们需要在主函数初始化QT应用程序对象,代码如下: ``` #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 其他代码 return a.exec(); } ``` 2. 创建一个继承自QObject的类,作为单线程例类,代码如下: ``` #include <QObject> class MyThread : public QObject { Q_OBJECT public: MyThread(QObject *parent = nullptr); void run(); signals: // 自定义信号 public slots: // 自定义槽函数 }; MyThread::MyThread(QObject *parent) : QObject(parent) { // 构造函数 } void MyThread::run() { // 线程际工作 } ``` 3. 在主函数创建单线程例并启动线程,代码如下: ``` #include "mythread.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MyThread thread; // 连接信号和槽 QThread workerThread; thread.moveToThread(&workerThread); QObject::connect(&workerThread, SIGNAL(started()), &thread, SLOT(run())); workerThread.start(); // 其他代码 return a.exec(); } ``` 通过以上步骤,我们可以在QT例类成功创建一个单线程。在MyThread的run()函数可以编写际的线程工作任务。通过workerThread.start()启动线程,在线程开始执行时,会自动调用MyThread类对象的run()函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值