我正在开发一种在不同计算机之间传输多个文件的软件,但我遇到了并发问题。当两个线程都使用Task.Run()开始发送时,字节在接收端嘟嘟嘟嘟,即数据冲突在一起。我已经尝试锁定我的代码的每个可能部分,可能导致错误都无济于事。这是我的代码的一部分。
//异步传输的代码
public void StartTransferAsync(Socket socket)
{
Task.Factory.StartNew(() =>
{
lock (this)
{
uploader = new Uploader(this, socket);
uploader.Upload();
}
});
}
//接收来自
的异步文件的代码public byte[] DownloadData()
{
int total = 0;
int recv = 0;
int size = 0;
int dataleft = 0;
byte[] data;
byte[] dataSize = new byte[4];
recv = socket.Receive(dataSize, 0, 4, 0);
size = BitConverter.ToInt32(dataSize, 0);
Console.WriteLine($"Size received: {size}");
if (size > 100038)
{
Console.WriteLine("Shii here");
}
dataleft = size;
data = new byte[size];
while (total < size)
{
recv = socket.Receive(data, total, dataleft, 0);
total += recv;
dataleft -= recv;
}
return data;
}
请帮助我真的需要这个。