Commit 61f24eb5 authored by hex's avatar hex

Added confirmation when setting a monster card face-down.

parent df6a6060
......@@ -261,34 +261,45 @@ public static class TcpHelper
{
if (tcpClient != null && tcpClient.Connected)
{
Thread t = new Thread(sender);
t.Start(message);
// 用线程池代替 Thread
System.Threading.ThreadPool.QueueUserWorkItem(sender, message);
}
}
static object locker = new object();
static void sender(object o)
static void sender(object state)
{
try
{
Package message = (Package)state;
byte[] data = message.Data.get();
// 预分配足够的 buffer,避免多余的内存流
int totalLen = 2 + 1 + data.Length;
byte[] s = new byte[totalLen];
// 写入长度(short,包含功能码长度)
short len = (short)(data.Length + 1);
s[0] = (byte)(len & 0xFF);
s[1] = (byte)((len >> 8) & 0xFF);
// 写入功能码
s[2] = (byte)message.Fuction;
// 写入数据
Buffer.BlockCopy(data, 0, s, 3, data.Length);
// 只锁发送
lock (locker)
{
Package message = (Package)o;
byte[] data = message.Data.get();
MemoryStream memstream = new MemoryStream();
BinaryWriter b = new BinaryWriter(memstream);
b.Write(BitConverter.GetBytes((Int16)data.Length + 1), 0, 2);
b.Write(BitConverter.GetBytes((byte)message.Fuction), 0, 1);
b.Write(data, 0, data.Length);
byte[] s = memstream.ToArray();
tcpClient.Client.Send(s);
}
}
catch (Exception e)
{
onDisConnected = true;
Program.DEBUGLOG("onDisConnected 5");
Program.DEBUGLOG("onDisConnected 5: " + e.Message + "\n" + e.StackTrace);
}
}
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment