PDA

View Full Version : عدم اجرای بیش از یک نمونه از برنامه در هر لحظه



BehinAfzar
پنج شنبه 26 بهمن 1391, 07:40 صبح
سلام
من یه برنامه دارم که در هر لحظه نباید بیش از یک نمونه از ان در حال اجرا باشد
مثل برنامه هایی که اگه در حال اجرا باشند و دوباره بخوای اجرا کنی اونی که در حال اجرا هست رو نشون میده و یه برنامه جدید اجرا نمیکنه
برای این کار چه کار کنم؟

mthreat.info
پنج شنبه 26 بهمن 1391, 08:27 صبح
سلام
من یه برنامه دارم که در هر لحظه نباید بیش از یک نمونه از ان در حال اجرا باشد
مثل برنامه هایی که اگه در حال اجرا باشند و دوباره بخوای اجرا کنی اونی که در حال اجرا هست رو نشون میده و یه برنامه جدید اجرا نمیکنه
برای این کار چه کار کنم؟

این کد رو با کد های Program.cs جایگزین کن



static class Program
{
[STAThread]
static void Main()
{
if (IsPrevInstance())
return;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1());
}

private static bool IsPrevInstance()
{
string processName = Process.GetCurrentProcess().ProcessName;
Process[] instances = Process.GetProcessesByName(processName);
if (instances.Length > 1)
{
MessageBox.Show("This Program is Runing!!!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return true;
}
else
{
return false;
}

}
}

BehinAfzar
پنج شنبه 26 بهمن 1391, 10:26 صبح
این مشکل حل شد
ولی میخوام بجای پیغام برنامه ای که minimize شده نمایش بده
چی کار کنم؟

Hajivandian
پنج شنبه 26 بهمن 1391, 11:32 صبح
سلام،
برای جلوگیری از اجرای چند نمونه از برنامه میشه از کلاس Mutex، و برای فعال کردن پنجره غیر فعال هم میشه از API های FlashWindow, ShowWindow, SetForgroundWindow استفاده کرد.
http://www.dotnetperls.com/mutex