hallo miteinander;
Ich habe eine c++ Dll die folgendes exportiert:
Importiert wird diese über c#:
Und aufgerufen:
Alles funktioniert soweit prima, wenn ich jedoch das Thread.Sleep(10); weglasse, ist der tmpCall immer 0.
Ein tapi makeCall ist ja asynchron. Ein LineReply empfange ich auch in meinem c# Monitor-Thread. Zu Testzwecken setzte ich den Monitor auf suspent, bevor das makecall aufgerufen wird. (mit resume danach...) Dies änderte aber nix daran, dass dieser tmpCall 0 ist, wenn kein Thread.Sleep(10); dem DLL-Aufruf folgt. Nebenbei: auch wenn 0 drin stand, wurde ein neuer call erzeugt.
Nun frage ich mich, warum das wohl so ist. Hat jemand eine Erklärung dafür?
besten dank. he
Ich habe eine c++ Dll die folgendes exportiert:
Code:
int DLL_EXPORT makeCall(HANDLE line, char* number,LPHANDLE retCall){ int ret=lineMakeCall((HLINE)line,(LPHCALL)retCall,number,0,NULL); return ret; }
Code:
[DllImport(@"tapiAdapter.dll", EntryPoint = "makeCall", ExactSpelling = false, CharSet = CharSet.Ansi, SetLastError = true)] static extern int _makeCall(UInt32 lineHandle, string number,out UInt32 retCall); public int makeCall(UInt32 lineHandle, string number,out UInt32 retCall){ return _makeCall(lineHandle,number,out retCall); }
Code:
int ret=tapi.makeCall(lineHandle,dn,out tmpCall); Thread.Sleep(10);//
Ein tapi makeCall ist ja asynchron. Ein LineReply empfange ich auch in meinem c# Monitor-Thread. Zu Testzwecken setzte ich den Monitor auf suspent, bevor das makecall aufgerufen wird. (mit resume danach...) Dies änderte aber nix daran, dass dieser tmpCall 0 ist, wenn kein Thread.Sleep(10); dem DLL-Aufruf folgt. Nebenbei: auch wenn 0 drin stand, wurde ein neuer call erzeugt.
Nun frage ich mich, warum das wohl so ist. Hat jemand eine Erklärung dafür?
besten dank. he
Comment