public static void Run() { var network = new NBXplorerNetworkProvider(ChainType.Main).GetBTC(); ExplorerClient client = new ExplorerClient(network, new Uri(Config.Instance.NBXplorer.ServerUrl)); Dictionary <int, GetTransactionsResponse> lastResponseDict = new Dictionary <int, GetTransactionsResponse>(); using (Way.Lib.CLog log = new Way.Lib.CLog("runForTransactions")) { while (true) { try { //程序刚启动,把所有交易拿出来检验一遍 checkAllTransactionForInit(network, client, log); break; } catch (Exception ex) { System.Threading.Thread.Sleep(3000); using (Way.Lib.CLog logErr = new Way.Lib.CLog("handleAllTransactionForInit error", false)) { logErr.Log(ex.ToString()); } } } while (true) { try { var events = client.CreateNotificationSession(); events.ListenAllDerivationSchemes(); log.Log($"init"); while (true) { log.Log($"waiting event..."); var txEvent = events.NextEvent(); log.Log($"received event,type:{txEvent?.GetType().FullName}"); if (txEvent is NBXplorer.Models.NewTransactionEvent) { using (var db = new MainDB()) { var tranEvent = txEvent as NBXplorer.Models.NewTransactionEvent; checkTransaction(db, tranEvent.TransactionData.Transaction, tranEvent.TransactionData.Confirmations, log); } } } } catch (Exception ex) { System.Threading.Thread.Sleep(2000); using (Way.Lib.CLog logErr = new Way.Lib.CLog("runForTransactions error", false)) { logErr.Log(ex.ToString()); } } } } }