Все
Спасибо за помощь. По какой-то причине мне не пришло в голову начать новую тему.
Спасибо всем за этот лакомый кусочек. Поскольку я уже нахожусь в IJW C ++ / cli, я решил, что лучше решить проблему с помощью .net framework.
Как только я понял, что мне нужна новая тема, это было довольно просто.
Я переместил свою функцию, которая вызывает C # dll, в отдельный класс:
ссылка класс StaClass
{
общественности:
System::String^ strFile;
System::String^ strNote;
void CallWiki()
{
WikiNotes::FrmWiki fw;
fw.File = strFile;
fw.Note = strNote;
fw.ShowDialog();
}
};
и затем из основного потока я использовал этот код для раскрутки потока STA.
wiki->strFile = gcnew System::String(File);
wiki->strNote = gcnew System::String(Note);
ThreadStart^ threadDelegate = gcnew ThreadStart(wiki, &StaClass::CallWiki);
Thread^ newThread = gcnew Thread(threadDelegate, 0);
newThread->SetApartmentState(ApartmentState::STA);
newThread->Start();
Простой и легкий для чтения и понимания (по крайней мере, для меня - я программист .Net, я никогда не углублялся в COM, MFC и ATL)