我只是在测试驱动我的程序,并正在查看它的进程的内存使用情况和其他。然后,我注意到我的 .NET 程序占用了大约 50% 的 CPU,几乎总是每隔一段时间就会跳到 98% 的 CPU。如果你运行它足够长的时间,程序缺乏更好的“废话”。
这是正常的吗?
更新:
method RemoteLink.ListenForClientConnections;
var theClient : HandleClient;
begin
// Loop and wait for client connection.
while true do
begin
//blocks until a client has connected to the server
ServerClientSock := ServerSock.AcceptTcpClient; <<== Blocking
theClient := new HandleClient;
theClient.startClient(ServerClientsock);
Invoke(new UpdateClients(UpdateTheList),theClient);
end;
end;
实际上,有问题的while循环线程不是上面的,而是下面的。
更新:
method TSerialIndicator.BigLoop;
begin
while true do
begin
if TurnOnTx then
begin
Thread.Sleep(50);
TxLight.BackColor := Color.Black;
TurnOnTx:=false;
end;
if TurnOnRx then
begin
Thread.Sleep(50);
RxLight.BackColor := Color.Black;
TurnOnRx:=false;
end;
end;
end;
一旦我的程序加载并运行,这个线程就会启动。正如您所看到的,如果我的程序没有传达我的 winform 上的指标不会得到更新,因此这个循环只是循环没有任何延迟。