如题,form用来显示图片,在program.cs文件中,已经做了唯一实例的处理,但不知道如何传参然后让form重新显示新的图片:
static class Program
{
public static System.Threading.Mutex MutexRun;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] cmd)
{
bool noRun = false;
MutexRun = new Mutex(true, "HumControl", out noRun);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 frm1 = new Form1();
if (noRun)
{
if (cmd.Length > 0)
{
frm1.strFile = cmd[0];
}
MutexRun.ReleaseMutex();
Application.Run(frm1);
}
else
{
if (cmd.Length > 0)
{
frm1.strFile = cmd[0];
}
//todo 如何写,改变正在运行的frm1的picbox图片变成给定的路径的图片
MessageBox.Show("已有实例正在运行!");
}
}
}
以下是form1.cs文件: public string strFile = @"F:\g.jpg";
private void Form1_Load(object sender, EventArgs e)
{
this.Location = new Point(0, 0);
//this.Size = new System.Drawing.Size(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
mvPicBox.BackColor = Color.Black;
this.mvPicBox.Image = Image.FromFile(strFile);
}
求高手指点,谢谢
可以在启动程序的时候去File.Open一个文件不关闭,然后做个异常捕获,如果有占用就表示已经打开了。
同样在启动程序的时候,去修改一个标识文件,然后用FileWacher监控这个文件的修改,一旦发生修改就会被当前运行的程序监控到,表示又在启动一个实例,然后设置你那个图片。
可以给点代码参考么?再启动一个新的实例那之前那个怎么办?我只希望打开一个,谢谢了
@tli-terry:
我说的实例是指执行Main函数,你不创建form就是了
使用Process 类,检查当前运行进程,发现有同名的,就触发替换图片的事件
非常感谢,之前没有接触过线程,也不知道触发图片替换的事件怎么写,能不能给点代码提示啊,谢谢了