C#
//在类中创建线程指针
Thread myThread=null;
//在类的初始化函数或者主窗口加载方法中初始化线程
myThread = new Thread(myFunc);//初始化线程,指定线程的执行的函数
myThread.IsBackground = true;//后台运行
myThread.Start();//线程启动
C++
//在类中声明线程句柄
HANDLE myThread; //创建检测数据库线程
static DWORD WINAPI myFunc(LPVOID lpParameter);//触发线程函数
在类的初始化中加入
detectDBThread = CreateThread(NULL, 0, myFunc, this, 0, NULL);//绑定线程函数
//注意如果是MFC程序的话,要在线程中访问主界面的控件要在线程回调中加入如下代码
//你的窗口类名* Dlg = (你的窗口类名*)lpParameter;//获取窗口句柄
在MFC中测试C++线程处理图片的时候遇到了如下的几个问题
1 打印错误信息
//C++有很多需要双字节参数的函数,打印错误信息的时候需要
try{........
}
catch (exception &ex)
{
wchar_t msg[100];
wchar_t msgEX[200];
wsprintf(msg, L"running fail, unknown error. num=%d", 1);//将字符串写入到WCHAR中
Dlg->SetDlgItemText(IDC_ZHUANGTAI, msg);//写文本框
CString exMsg;
mbstowcs(msgEX, ex.what(), 2 * strlen(ex.what()));//常量char*转Cstring 因为是双字节所以后面字符长度乘以了2
exMsg.Format(L"错误信息:%s", msgEX);
AfxMessageBox(exMsg);
}
2 如下错误提示
这个问题是读入了彩色图像却调用了颜色空间灰度转换BGR的问题
3 错误提示如下
这个错误是因为模型库未初始化完成就调用了相应的处理方法,导致出错