【发布时间】:2014-08-23 04:52:04
【问题描述】:
感谢 DaveK 在另一个线程中检查我的程序是否正在运行的解决方案。但我没有发表评论的声誉,也找不到给他发消息的方式,所以这就是我创建这个新问题的原因。
我是编程新手,刚刚开始创建一个简单的程序。我想拒绝程序运行多个实例。由于我不了解互斥锁,我想使用 DaveK 的解决方案。
public bool IsProcessOpen(string name = "Opentxtfile")
{
foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.Contains(name))
{
return true;
}
}
return false;
}
在此之后,我想使用 true 或 false 来退出程序或继续运行,但是我无法完成这项工作。当我尝试在 if 语句中使用 IsProcessOpen 时出现错误:
无法分配给“IsProcessOpen”,因为它是“方法组”
如果这是一个愚蠢的问题,我很抱歉,但我已经尝试用谷歌搜索找到答案但找不到它..
编辑:其余代码:
public Main()
{
InitializeComponent();
}
private void S_Click(object sender, EventArgs e)
{
S O = new S();
O.ShowDialog();
this.Hide();
}
private void Ro_Click(object sender, EventArgs e)
{
Ro R = new Ro();
R.ShowDialog();
this.Hide();
}
private void Quit_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
因此,在另一个论坛的一些帮助之后,我似乎遗漏了一些括号。但是现在当我添加这个时,什么都没有发生:
public void errormessage()
{
if (IsProcessOpen())
{
MessageBox.Show("Program is already running!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
【问题讨论】:
-
请向我们提供您遇到问题的代码。我们需要查看您的代码。错误不在方法中,而是在您调用此方法的位置。
-
如果您正在使用
if(IsProcessOpen),则需要将其更改为if(IsProcessOpen())或if(IsProcessOpen("someprocessname")) -
不要谷歌,阅读错误信息。它告诉您错误的原因/性质(这就是为什么它被称为“错误消息”而不是,例如,“贺卡”)。该消息告诉您“...因为它是一个方法组”。所以你正在处理一个方法
IsProcessOpen(...)。然后它还告诉您您尝试为IsProcessOpen(...) = somevalue;之类的方法分配一个值,这当然是不可能的 - 您只能为变量/字段/属性分配值,但不能为方法分配值......很可能,您不小心使用了 @在某些 if 语句中使用 987654330@ 而不是==... -
这 4 个赞让我吃惊...
-
对不起,没有侮辱任何人的意思。正如我所说,我刚开始编程,所以我知道的很少。我已经用其余的代码更新了我的第一篇文章。
标签: c# if-statement methods boolean