小编eli*_*mad的帖子

CPU友好的无限循环

编写无限循环很简单:

while(true){
    //add whatever break condition here
}
Run Code Online (Sandbox Code Playgroud)

但这会破坏CPU的性能.此执行线程将尽可能多地从CPU的电源中获取.

降低对CPU影响的最佳方法是什么?添加一些Thread.Sleep(n)应该可以解决问题,但为Sleep()方法设置高超时值可能表示对操作系统的应用程序无响应.

假设我需要在控制台应用程序中每分钟执行一次任务.我需要继续Main()在"无限循环"中运行,而计时器将触发将完成工作的事件.我想保持Main()对CPU的最小影响.

你有什么方法可以建议.Sleep()可以,但正如我已经提到的,这可能表明操作系统没有响应.

后期编辑:

我想更好地解释一下我在寻找什么:

  1. 我需要一个控制台应用程序不是Windows服务.控制台应用程序可以使用Compact Framework模拟Windows Mobile 6.x系统上的Windows服务.

  2. 只要Windows Mobile设备运行,我需要一种方法让应用程序保持活动状态.

  3. 我们都知道控制台应用程序运行只要其静态Main()函数运行,所以我需要一种方法来阻止Main()函数退出.

  4. 在特殊情况下(例如:更新应用程序),我需要请求应用程序停止,因此我需要无限循环并测试某些退出条件.例如,这就是为什么Console.ReadLine()我没用.没有退出条件检查.

  5. 关于上面,我仍然希望Main()函数尽可能地对资源友好.让我们确定检查退出条件的函数的指纹.

.net c# console-application infinite-loop

53
推荐指数
2
解决办法
5万
查看次数

如何复制到剪贴板,ListView的多个选定项目?

此代码适用于单个选定项目:在顶部:

ContextMenuStrip menuStrip;
Run Code Online (Sandbox Code Playgroud)

然后在构造函数中:

menuStrip = new ContextMenuStrip();
menuStrip.ItemClicked += menuStrip_ItemClicked;
menuStrip.Items.Add("Cut");
menuStrip.Items.Add("Copy");
menuStrip.Items.Add("Paste");
Run Code Online (Sandbox Code Playgroud)

menuStripitemclicked事件:

ListViewItem item;
        private void menuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            if (e.ClickedItem.Text == "Copy")
            {
                Clipboard.SetText(item.SubItems[1].Text);

            }
        }
Run Code Online (Sandbox Code Playgroud)

然后ListView鼠标单击事件:

private void lstDisplayHardware_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                item = lstDisplayHardware.GetItemAt(e.X, e.Y);
                menuStrip.Show(lstDisplayHardware, e.Location);
            }
        }
Run Code Online (Sandbox Code Playgroud)

此代码适用于单个选定项目.例如,我单击项目中的项目ListView,右键单击该项目并选择Copy:将所选项目的子项目复制到剪贴板.

但现在我想为多项选择做同样的事情.

因此,如果我使用Ctrl +鼠标左键单击并选择4个项目并Copy从上下文菜单中调用命令,我希望将4个所选项目文本的所有子项目复制到剪贴板中.

例如,我有这些项目:

丹尼你好世界
丹尼尔喜所有
dan rain今天
daniels阳光灿烂的日子

我选择了这些项目:

丹尼·
丹尼尔·
丹·
丹尼尔斯

然后右键单击并单击"复制".当我paste …

.net c# winforms

5
推荐指数
3
解决办法
1万
查看次数

标签 统计

.net ×2

c# ×2

console-application ×1

infinite-loop ×1

winforms ×1