Я работаю над приложением C # и сталкиваюсь со странной проблемой. У меня есть .dll, которая была встроена в C ++, и я должен вызывать некоторые функции из этого .dll из приложения C #.
Рассмотрим этот пример кода:
public partial class MainWindows: Window
{
public MainWindow()
{
InitializeComponent();
ConfigurationFunctions.StartMain(); //Start main is the DLL function in C++
int x = ConfigurationFunctions.ReturnIntExp();
StringBuilder sb = ConfigurationOptions.ReturnSomethingExp();
}
}
C ++ .cpp файл
EXPORT_API int xExp;
EXPORT_API char cExp;
EXPORT_API StartMain()
{
//Calculate `x` and `y` in this program values here and allocate to variables to be returned from function
xExp = x;
cExp = c;
}
EXPORT_API int ReturnIntExp()
{
return xExp;
}
EXPORT_API char ReturnSomethingExp()
{
return cExp;
}
Проблема в том, что когда я запускаю функцию StartMain()
из .dll, она вычисляет некоторые значения для int
и char
, которые должны быть назначены переменным (которые фактически возвращаются в приложение C #)
Но после StartMain()
приложение C # должно дождаться завершения функции StartMain()
(которая в этом случае занимает приблизительно 3-4 секунды, а сама dll запускает два / три других процесса) и только затем продолжить работу или же переменные x
и sb
в приложении C # будут иметь пустые / бессмысленные значения.
Как я могу добиться того же в этом случае?