Как я могу синхронизировать обратный вызов pinvoke в методе? - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть собственная dll, написанная на C. Одна из функций - поиск Gateway и возврат после тайм-аута.

В кодах C это синхронный процесс

поиск -> обратный вызов -> возврат bool.

Итак, к моменту окончания find_gw, gw_found уже был вызван, поэтому у нас уже есть результаты. Есть ли правильный способ синхронизировать это, чтобы я мог получить gwaddr gwname сразу после find_gw? И я нумеровал порядок его выполнения. gw_found вызывается внутри find_gw синхронно

    var gw_found = new FOUND_GW_CALLBACK(callback) //1.new delegate
     bool pinvokereturn=GwPInvokes.find_gw(broadcastaddr, timeout, gw_found);//2.pinvoke                  
    //4.How to get gwaddr/gwname here

, где

public static bool callback(IntPtr ptr,string gwddr,string gwname)
{
    return true; //3.callback
}
...