public void StartAll(Func <string, int> enqueue, DataArrivalEventHandler onDataArrival = null) { foreach (DeviceAdapterAbstract dataIntake in _dataIntakes) { try { if (onDataArrival != null) { OnDataToEnqueue = data => { onDataArrival(data); return(enqueue(data)); }; } else { OnDataToEnqueue = enqueue; } dataIntake.Start(OnDataToEnqueue); } catch (Exception ex) { _logger.LogError("Exception on Starting DeviceAdapter: " + ex.StackTrace); // catch all other exceptions } } }
private void CallBackMethod(IAsyncResult ar) { //从异步状态ar.AsyncState中,获取委托对象 DataArrivalEventHandler dn = (DataArrivalEventHandler)ar.AsyncState; //一定要EndInvoke,否则你的下场很惨 dn.EndInvoke(ar); }
public void StartAll( Func<string, int> enqueue, DataArrivalEventHandler onDataArrival = null ) { foreach( DeviceAdapterAbstract dataIntake in _dataIntakes ) { try { if( onDataArrival != null ) { OnDataToEnqueue = data => { onDataArrival( data ); return enqueue( data ); }; } else { OnDataToEnqueue = enqueue; } dataIntake.Start( OnDataToEnqueue ); } catch( Exception ex ) { _logger.LogError( "Exception on Starting DeviceAdapter: " + ex.StackTrace ); // catch all other exceptions } } }