Witam wszystkich :)
Mam pytanko. NApisałem sobie DLL'a w C w którym mam funkcję A w stylu:
DLL_EXPORT void A ( int x, int y, void (*func)(int a, int b ) )
{
if ( func != NULL )
func ( x, y );
}
Wszystko jest ok. Działa mi ładnie delegacja, jednak kiedy wprowadze małą modyfikację:
DLL_EXPORT void A ( int x, int y, void (*func)(int a, int b ) )
{
while ( 1 )
{
if ( func != NULL )
func ( x, y );
}
}
DLL zwiesza się po 4 - 6 albo 8 pętli. Dlaczego i jak tego uniknąć ?
Reszta kodu:
public delegate void DELEGATE_A ( uint x, uint y );
DELEGATE_A dA;
void ShowXY ( int x, int y )
{
MessageBox.Show("X: " +x.ToString() + " Y: " +y.ToString() );
// WAŻNE tutaj idzie jeszcze modyfikacja ProgressBar więc dlatego nie ma static
}
[DllImport("jakistam.dll", CallingConvention=CallingConvention.Cdecl)]
static extern void A ( int x, int y, DELEGATE_A func );
public Konstruktor()
{
this.dA = new DELEGATE_A ( ShowXY );
}
void metoda (...)
{
A ( 10, 10, dA );
}
Mogłem coś pomieszać, ale ogólnie tak to wygląda.
Z góry dziękuję za wszelką pomoc :)