VC CLR工程中加入了webbrowser控件,运行后报“当前线程不在单线程单元中”错误。
解决办法:
#include "stdafx.h"
#include "MyForm.h"
#include <iostream>
#include <stdlib.h>
#include <combaseapi.h>
#pragma comment(lib,"Ole32.lib")
using namespace System;
using namespace ConsoleApplication3;
int main(array<System::String ^> ^args)
{
CoUninitialize();
HRESULT hr = CoInitialize(NULL);
if (hr != S_OK)
printf("hr failed/n");
else
printf("hr ok/n");
MyForm frm;
frm.ShowDialog();
return 0;
}
原理就是调用了CoInitialize(NULL),创建并进入一个单线程单元。类似于c#的 [STAThread] void main(....)
直接调用CoInitialize有可能会返回错误,所以要在前面加一条CoUninitialize()。
百试百灵,以上。