/// <summary> /// 单纯的获取数字形式的流水号 /// </summary> /// <returns>新增计数后的信息</returns> public long GetLongOrder( ) { long number = Interlocked.Increment(ref CurrentIndex); AsyncCoordinator.StartOperaterInfomation( ); return(number); }
/// <summary> /// 获取流水号数据 /// </summary> /// <returns></returns> public string GetNumericalOrder() { long number = Interlocked.Increment(ref CurrentIndex); AsyncCoordinator.StartOperaterInfomation(); return(TextHead + DateTime.Now.ToString(TimeFormate) + number.ToString().PadLeft(NumberLength, '0')); }
public void request_is_faulted_when_writer_throws_exception() { var requestCompletion = new RequestCompletion(); AggregateException exception = null; var waitHandle = new ManualResetEvent(false); requestCompletion.WhenCompleteDo(ex => { exception = ex as AggregateException; waitHandle.Set(); }); var asyncCoordinator = new AsyncCoordinator(requestCompletion, Enumerable.Empty <IExceptionHandler>()); theWriter.WriterThrows = true; var task = theChannelWriter.Write(theTopic); theChannel.Write(q => q.Write(e1)); asyncCoordinator.Push(task); waitHandle.WaitOne(TimeSpan.FromSeconds(1)); var exceptions = exception.Flatten().InnerExceptions; exceptions.Count.ShouldBe(1); exceptions[0].Message.ShouldBe(RecordingServerEventWriter.ExceptionMessage); }
private void LoadByFileAndInitAsyncCoordinator() { LoadByFile(m => m); _AsyncCoordinator = new AsyncCoordinator(() => { if (!string.IsNullOrEmpty(FileSavePath)) { using (StreamWriter sw = new StreamWriter(FileSavePath, false, Encoding.UTF8)) { sw.Write(CurrentIndex); } } }); }
private void TcpStateUpLine(AppSession state) { HybirdLockSockets.Enter( ); All_sockets_connect.Add(state); HybirdLockSockets.Leave( ); // 提示上线 ClientOnline?.Invoke(state); // 是否保存上线信息 if (IsSaveLogClientLineChange) { LogNet?.WriteInfo(ToString(), "IP:" + state.IpAddress + " Name:" + state?.LoginAlias + " " + StringResources.NetClientOnline); } // 计算客户端在线情况 AsyncCoordinator.StartOperaterInfomation( ); }
private void TcpStateDownLine(AppSession state, bool is_regular) { HybirdLockSockets.Enter( ); All_sockets_connect.Remove(state); HybirdLockSockets.Leave( ); // 关闭连接 TcpStateClose(state); // 判断是否正常下线 string str = is_regular ? StringResources.NetClientOffline : StringResources.NetClientBreak; ClientOffline?.Invoke(state, str); // 是否保存上线信息 if (IsSaveLogClientLineChange) { LogNet?.WriteInfo(ToString(), "IP:" + state.IpAddress + " Name:" + state?.LoginAlias + " " + str); } // 计算客户端在线情况 AsyncCoordinator.StartOperaterInfomation( ); }
private void TimerCallBack() { // 如果已经连接就返回,此处采用原子操作实现 if (Interlocked.CompareExchange(ref ConnectStatus, 1, 0) == 0) { m_ac = new AsyncCoordinator(); for (int i = 0; i < PlcStates.Length; i++) { PlcStates[i].IsConnect = false; PlcStates[i].WorkSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); PlcStates[i].WorkSocket.BeginConnect(new IPEndPoint(PlcStates[i].PlcIpAddress, PlcStates[i].GetPort()), new AsyncCallback(PlcConnectCallBack), PlcStates[i]); PlcStates[i].LengthDataHead = 0; PlcStates[i].LengthDataContent = 0; m_ac.AboutToBegin(1); } // 启动检查连接情况 m_ac.AllBegun(AllDown); } }
/// <summary> /// 清除流水号计数,进行重新计数 /// </summary> public void ClearNumericalOrder( ) { Interlocked.Exchange(ref CurrentIndex, 0); AsyncCoordinator.StartOperaterInfomation( ); }