/// <summary> /// Initializes the message queues, read and write thread /// </summary> public IrcConnection() { #if LOG4NET Logger.Init(); Logger.Main.Debug("IrcConnection created"); #endif _SendBuffer[Priority.High] = Queue.Synchronized(new Queue()); _SendBuffer[Priority.AboveMedium] = Queue.Synchronized(new Queue()); _SendBuffer[Priority.Medium] = Queue.Synchronized(new Queue()); _SendBuffer[Priority.BelowMedium] = Queue.Synchronized(new Queue()); _SendBuffer[Priority.Low] = Queue.Synchronized(new Queue()); // setup own callbacks OnReadLine += new ReadLineEventHandler(_SimpleParser); OnConnectionError += new EventHandler(_OnConnectionError); _ReadThread = new ReadThread(this); _WriteThread = new WriteThread(this); _IdleWorkerThread = new IdleWorkerThread(this); Assembly assm = Assembly.GetAssembly(this.GetType()); AssemblyName assm_name = assm.GetName(false); AssemblyProductAttribute pr = (AssemblyProductAttribute)assm.GetCustomAttributes(typeof(AssemblyProductAttribute), false)[0]; _VersionNumber = assm_name.Version.ToString(); _VersionString = pr.Product + " " + _VersionNumber; }
protected void KillWriteThread() { if (writeThread != null) { writeThread.StopThread(); writeThread = null; } }
protected void KillWriteThread() { if (writeThread != null) { writeThread.StopThread(); Log.Info("UsbSerialDevice", "Write Thread stopped."); writeThread = null; } }
// Starts this peer's associated threads internal void Start() { // Begin reading Read(); // Begin writing WriteThread.Start(); // Invoke peer connected callback Server.OnPeerConnected?.Invoke(this, EventArgs.Empty); }
/// <summary> /// Starts this database /// </summary> public void Start() { // Create sqlite connection Connection = new SqliteConnection($"Data Source={DatabaseFile}"); // Open sqlite connection Connection.Open(); // Begin the write thread WriteThread.Start(); }
protected void RestartWriteThread() { if (writeThread == null) { writeThread = new WriteThread(this); writeThread.Start(); while (!writeThread.IsAlive) { } // Busy waiting } }
protected void RestartWriteThread() { if (writeThread == null) { writeThread = new WriteThread(this); writeThread.Start(); while (!writeThread.IsAlive) { } // Busy waiting Log.Info("UsbSerialDevice", "Write Thread started."); } }
public static void Main(string[] args) { var writeThread = new WriteThread <SampleData>(WriteBlockingCollection, "Output.txt"); //Create a object for write thread var writeThread1 = new Thread(writeThread.WriteData); //Create write thread writeThread1.Start(); //start the write thread var readThread = new ReadThread <SampleData>(ReadBlockingCollection, "Output.txt"); //Create a object for write thread var readThread1 = new Thread(readThread.ReadItem); //Create read thread readThread1.Start(); //start read thread var random = new Random(50000); int count = 0; int totalObjects = 50000; var writeTask = Task.Run(() => { //create some random objects and add them to write queue while (count < totalObjects) { WriteBlockingCollection.Add(new SampleData(random.Next(), $"Random Data {random.Next()}", DateTime.Now.ToString(CultureInfo.InvariantCulture))); count++; } //End adding new items to queue thus mentioning end of write operation WriteBlockingCollection.CompleteAdding(); while (WriteBlockingCollection.Count > 0) { Thread.Sleep(100); //Just to make sure all are read } //Set this so that read thread can stop further reading from file Running = false; }); var readTask = Task.Run(() => { var readCount = 0; foreach (var item in ReadBlockingCollection.GetConsumingEnumerable()) { Console.WriteLine(item.ToString()); readCount++; } //Just verify total count should be Console.WriteLine($"Read Count From Read Thread : {readCount}"); Debug.Assert(totalObjects == count, "Either File is appended with new values or something wrong, delete Output.txt and recreate it"); }); Task.WaitAll(writeTask, readTask); writeThread1.Join(); readThread1.Join(); Console.WriteLine("Reading and writing from file Completed!. Press any key to continue"); Console.ReadLine(); }
/// <summary> /// Stops this database /// </summary> public void Stop() { // Signal a stop event StopEvent.Set(); WriteThread.Join(); // Dispose of sqlite connection if (Connection.State == ConnectionState.Open) { Connection.Close(); } Connection.Dispose(); }
/// <summary> /// Starts this instance. /// </summary> public void Start() { if (ReadThread != null) { ReadThread.Start(); } if (WriteThread != null) { WriteThread.Start(); } Running = true; }
/** * Clear socket and threads */ private void Clear() { if (ReadThread.IsAlive) { ReadThread.Abort(); } if (WriteThread.IsAlive) { WriteThread.Abort(); } Socket.Close(); }
/// <summary> /// 备份文件线程 /// </summary> void BackUpRun() { int count = 0; while (true) { GetBackUpItems(out count); if (count < 0) { WriteState("连接失败!"); Thread.Sleep(1000); } else { break; } } if (count > MemchcheCount) { WriteState("Memcache 已经有数据" + count + "条,大于设置恢复的条数" + MemchcheCount + "条,当前不需要更新!"); } else { if (System.IO.Directory.Exists(recoverPath)) { if (System.IO.Directory.Exists(recoverPath)) { string[] dirs = Directory.GetDirectories(recoverPath); string[] servers = (string[])serverList.ToArray(typeof(string)); //遍历本地文件,写入memcache WriteThread wt = null; foreach (string path in dirs) { wt = new WriteThread(path, new Help(0, 1, 0, true)); wt.frm = this; wt.serverList = servers; dicWirte.Add(path, wt); wt.Start(); } } } else { return; } } }
// Stops this peer's associated threads internal void Stop() { // Invoke peer disconnected callback Server.OnPeerDisconnected?.Invoke(this, EventArgs.Empty); // Set stop event StopEvent.Set(); // Stop write thread if (WriteThread.IsAlive) { WriteThread.Join(); } // Stop client Client.Close(); }
private void FinishConnect(IAsyncResult result) { try { var beginClient = (TcpClient)result.AsyncState; if (beginClient == null) { Close(); return; } beginClient.EndConnect(result); if (beginClient.Connected) { // 启动读取和写入线程。 _readThread = new ReadThread(this, beginClient, _msgQueue); _readThread.Start(); _writeThread = new WriteThread(this, beginClient, _msgQueue); _writeThread.Start(); // 已经连接上。 Status = SocketStatus.Connected; _client = beginClient; } else { // 未连接成功,关闭当前连接。 Close(); } } catch (Exception e) { MyLog.ErrorAsync(Tag, string.Format("end connect error: {0}\n{1}", e.Message, e.StackTrace)); Close(); } }
/// <summary> /// Initializes the message queues, read and write thread /// </summary> public IrcConnection() { #if LOG4NET Logger.Init(); Logger.Main.Debug("IrcConnection created"); #endif _SendBuffer[Priority.High] = Queue.Synchronized(new Queue()); _SendBuffer[Priority.AboveMedium] = Queue.Synchronized(new Queue()); _SendBuffer[Priority.Medium] = Queue.Synchronized(new Queue()); _SendBuffer[Priority.BelowMedium] = Queue.Synchronized(new Queue()); _SendBuffer[Priority.Low] = Queue.Synchronized(new Queue()); // setup own callbacks OnReadLine += new ReadLineEventHandler(_SimpleParser); OnConnectionError += new EventHandler(_OnConnectionError); _ReadThread = new ReadThread(this); _WriteThread = new WriteThread(this); _IdleWorkerThread = new IdleWorkerThread(this); Assembly assm = Assembly.GetAssembly(this.GetType()); AssemblyName assm_name = assm.GetName(false); AssemblyProductAttribute pr = (AssemblyProductAttribute)assm.GetCustomAttributes(typeof(AssemblyProductAttribute), false)[0]; _VersionNumber = assm_name.Version.ToString(); _VersionString = pr.Product+" "+_VersionNumber; }
/// <summary> /// Initializes the message queues, read and write thread /// </summary> public IrcConnection() { ProxyType = ProxyType.None; PingTimeout = 300; PingInterval = 60; IdleWorkerInterval = 60; SocketSendTimeout = 600; SocketReceiveTimeout = 600; Encoding = Encoding.Default; AutoRetryLimit = 3; AutoRetryDelay = 30; SendDelay = 200; sendBuffer[Priority.High] = Queue.Synchronized(new Queue()); sendBuffer[Priority.AboveMedium] = Queue.Synchronized(new Queue()); sendBuffer[Priority.Medium] = Queue.Synchronized(new Queue()); sendBuffer[Priority.BelowMedium] = Queue.Synchronized(new Queue()); sendBuffer[Priority.Low] = Queue.Synchronized(new Queue()); // setup own callbacks OnReadLine += SimpleParser; OnConnectionError += _OnConnectionError; readThread = new ReadThread(this); writeThread = new WriteThread(this); idleWorkerThread = new IdleWorkerThread(this); Assembly assembly = Assembly.GetAssembly(GetType()); AssemblyName assemblyName = assembly.GetName(false); var pr = (AssemblyProductAttribute)assembly.GetCustomAttributes(typeof(AssemblyProductAttribute), false)[0]; VersionNumber = assemblyName.Version.ToString(); VersionString = pr.Product + " " + VersionNumber; }
/// <summary> /// Initializes the message queues, read and write thread /// </summary> public IrcConnection() { #if LOG4NET Logger.Main.Debug("IrcConnection created"); #endif // setup own callbacks OnReadLine += new ReadLineEventHandler(_SimpleParser); OnConnectionError += new EventHandler(_OnConnectionError); _ReadThread = new ReadThread(this); _WriteThread = new WriteThread(this); _IdleWorkerThread = new IdleWorkerThread(this); Assembly assm = Assembly.GetAssembly(this.GetType()); AssemblyName assm_name = assm.GetName(false); AssemblyProductAttribute pr = (AssemblyProductAttribute)assm.GetCustomAttributes(typeof(AssemblyProductAttribute), false)[0]; _VersionNumber = assm_name.Version.ToString(); _VersionString = pr.Product+" "+_VersionNumber; }