局域网桌面监控

Mark杨 2010-06-28 11:05:53
我是实现流程:
1.客户端通过Timer 100毫秒截屏一次,转为jpg图片,再转为byte[]
2.通过socket把byte[]传给服务器
3.服务器把byte[]转为图片显示

通过测试,发现一个大问题:只要监控桌面的话,客户端CPU使用率都在30%左右。(1G内存,Inter 双核 主频:1.6 总频:1M)

有什么方法可以降低cpu使用率?

...全文
269 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
满衣兄 2010-06-28
  • 打赏
  • 举报
回复
只创建一次线程,然后在线程里100MS截屏一次就行了
满衣兄 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yabbi215 的回复:]
C# code

private void timer1_Tick(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(this.PrintImage));
t.Start();
}


PrintImage()
……
[/Quote]
Tick是超过计时器间隔时发生,你这样岂不是100MS要创建一次线程了吗
Mark杨 2010-06-28
  • 打赏
  • 举报
回复
1秒的话 cpu只有3%
但是监控效果不是就打折扣了吗?
Mark杨 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lianshaohua 的回复:]
100ms太快了,和线程与不线程没有关系;/
[/Quote]

那要多久才合适呢?
ztenv 2010-06-28
  • 打赏
  • 举报
回复
100ms太快了,和线程与不线程没有关系;/
hhc123 2010-06-28
  • 打赏
  • 举报
回复
这方面的软件都卡啊。开远程控制的也一样啊。好像QQ的比较好点
什么阿里旺旺也是很慢
Mark杨 2010-06-28
  • 打赏
  • 举报
回复

private void timer1_Tick(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(this.PrintImage));
t.Start();
}

PrintImage()
-->> 包含截图,转换,和发送

但是cpu使用率还是那么高。。
满衣兄 2010-06-28
  • 打赏
  • 举报
回复
截屏专门开个线程
Mark杨 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 afeng124 的回复:]
C# code

Thread t = new Thread(new ThreadStart(BeginPrintImage);
t.IsBackGroud = true;
t.Start();
private void BeginPrintImage()
{
while (true)
{
PrintImage();
Thread.Sleep……
[/Quote]

我没有写成windows服务,cpu使用率比原来下降了一半。但是还有15%左右。
写成windows服务会比较好吗?
我没接触过windows服务,不知道要知道弄。如果有例子的话,可以发一个参考下吗。
谢了!
afeng124 2010-06-28
  • 打赏
  • 举报
回复

Thread t = new Thread(new ThreadStart(BeginPrintImage);
t.IsBackGroud = true;
t.Start();
private void BeginPrintImage()
{
while (true)
{
PrintImage();
Thread.Sleep(100);
}
}

把它写出windows服务,使用后台线程来完成。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧