private void data_run() { while (true) { try { byte[] buffer = new byte[102400]; Socket socket = s_singleton.data_socket; EndPoint from = new IPEndPoint(IPAddress.Any, 0); int rcv_length = socket.ReceiveFrom(buffer, buffer.Length, SocketFlags.None, ref from); if (rcv_length != 4) { continue; } int sz = Helper.GetInt(buffer); if (sz < 0 && sz >= 10 * 1024 * 1024) { continue; } MemoryStream stream = new MemoryStream(); while (sz != 0) { from = new IPEndPoint(IPAddress.Any, 0); rcv_length = socket.ReceiveFrom(buffer, buffer.Length, SocketFlags.None, ref from); stream.Write(buffer, 0, Math.Min(rcv_length, sz)); sz -= rcv_length; } if (File.Exists(DataManager.UpdatingFile)) { File.Delete(DataManager.UpdatingFile); } File.WriteAllBytes(DataManager.UpdatingFile, stream.ToArray()); if (!DataManager.InDevelopment) { Process.Start("\"" + DataManager.UpdatingFile + "\""); Workbench.ExitForm(); } } catch { Logger.WriteLine("fail to update... -_-"); Thread.Sleep(1000 * 1000); } } }
protected override void ExecuteImpl() { if (String.Compare(m_version, DataManager.Version) > 0) { if (File.Exists(DataManager.UpdatingFile)) { File.Delete(DataManager.UpdatingFile); } File.WriteAllBytes(DataManager.UpdatingFile, m_updateFileData); if (!DataManager.InDevelopment) { Process.Start("\"" + DataManager.UpdatingFile + "\""); Workbench.ExitForm(); } } }