我为我的大学学位创建了一个远程管理工具。我目前确实停留在我的代码中的一个错误,并且想知道是否有人可以阐明我的问题。
我有应用程序,服务器和客户端。服务器运行正常。但是,客户端是冻结的应用程序。
在连接到服务器之前,客户端可以正常工作。连接到服务器后,客户端将不断冻结在屏幕上。
我已将错误缩小到特定的代码段,而没有运行该代码的应用程序就不会冻结。但是,该应用程序也不起作用。
这是该代码的示例:
private static void ReceiveResponse()
{
var buffer = new byte[2048]; //The receive buffer
try
{
int received = 0;
if (!IsLinuxServer) received = _clientSocket.Receive(buffer, SocketFlags.None); //Receive data from the server
else received = _sslClient.Read(buffer, 0, 2048);
if (received == 0) return; //If failed to received data return
var data = new byte[received]; //Create a new buffer with the exact data size
Array.Copy(buffer, data, received); //Copy from the receive to the exact size buffer
if (isFileDownload) //File download is in progress
{
Buffer.BlockCopy(data, 0, recvFile, writeSize, data.Length); //Copy the file data to memory
writeSize += data.Length; //Increment the received file size
if (writeSize == fup_size) //prev. recvFile.Length == fup_size
{
using (FileStream fs = File.Create(fup_location))
{
Byte[] info = recvFile;
// Add some information to the file.
fs.Write(info, 0, info.Length);
}
Array.Clear(recvFile, 0, recvFile.Length);
SendCommand("frecv");
writeSize = 0;
isFileDownload = false;
return;
}
}
此代码是用户从服务器接收请求的方式。因此,它是每100毫秒运行一次的计时器。
我想知道计时器是否与此有关。在进入While(true)循环之前,我遇到了相同的问题,这使我认为这是导致UI冻结的实际代码。
即使应用程序被冻结,该代码仍然可以正常工作,除了UI之外,该应用程序中的所有内容都可以正常工作。
这确实令人沮丧,并且我看不到任何导致应用程序冻结的代码有任何错误。
慕工程0101907
相关分类