PDA

View Full Version : عدم باز كردن بيش از يكبار همزمان برنامه توسط كاربر



afsaneh.asp
پنج شنبه 12 اسفند 1389, 09:50 صبح
سلام
براي اينكه كاربر نتونه بيش از يكبار برنامه رو بصورت همزمان باز كنه چيكار كنم؟

ممنون

مهدی فرزاد
پنج شنبه 12 اسفند 1389, 10:54 صبح
سلام
کد زیر رو به فایل App.xaml.cs برنامه اضافه کنید

public App()
{
string str = System.IO.Path.GetFileName(System.Reflection.Assem bly.GetEntryAssembly().GetName().Name);
if (System.Diagnostics.Process.GetProcessesByName(str ).Length > 1)
{
MessageBox.Show("برنامه در حال اجرا است");
Application.Current.Shutdown();
}
}

sunn789
شنبه 14 اسفند 1389, 19:14 عصر
سلام
من این کد رو در app.xaml.cs میزارم اما یک مشکل دارم: اینکه بعد از
System.Diagnostics.Process.
عبارت GetProcessesByName رو قبول نداره یعنی بعد از نقطه هیچی نمایش داده نمیشه وندونستم چیو باید اضافه کنم

مهدی فرزاد
شنبه 14 اسفند 1389, 22:52 عصر
سلام
من این کد رو در app.xaml.cs میزارم اما یک مشکل دارم: اینکه بعد از
System.Diagnostics.Process.
عبارت GetProcessesByName رو قبول نداره یعنی بعد از نقطه هیچی نمایش داده نمیشه وندونستم چیو باید اضافه کنم

سلام
دوست عزیز دقت کنید کد ها رو باید حتما در متد سازنده کلاس یعنی در بین این کد قرار بدید

public App()
{
}

به کد بیشتر دقت کنید مشکل از اینجا باید باشه

sunn789
شنبه 14 اسفند 1389, 23:05 عصر
اول متشکر
دوم من کد رو بین این نوشتم

public partial class App : Application
{
string str = System.IO.Path.GetFileName(System.Reflection.Assem bly.GetEntryAssembly().GetName().Name);

}

مهدی فرزاد
یک شنبه 15 اسفند 1389, 00:34 صبح
سلام
دقیقا مثل کد من بنویسید یعنی بین

public App() { }
که باید خودتون ایجادش کنید (کد من رو دقیقا کپی کنید)

mehdi.mousavi
یک شنبه 15 اسفند 1389, 15:04 عصر
سلام.
روش صحیح برای محدود کردن اجرای نرم افزار به یک Instance، استفاده از Mutex هاست.
البته روش های دیگه (http://www.switchonthecode.com/tutorials/wpf-writing-a-single-instance-application) ای نیز وجود داره، اما خوب، Mutex برای دسترسی به یک Shared Resource از
طریق Thread ها و Process های مختلف ایجاد شده و برای این منظور مناسب ترین گزینه هستش.

موفق باشید.

mehrvarz9
دوشنبه 16 اسفند 1389, 16:18 عصر
تو این پست هم یه چیزایی می تونی پیدا کنی
http://barnamenevis.org/showthread.php?239489-single-instance-%D8%AF%D8%B1-C-%D8%A8%D9%87-%DA%A9%D9%85%DA%A9-VB&highlight=

afsaneh.asp
چهارشنبه 18 اسفند 1389, 13:30 عصر
سلام
کد زیر رو به فایل App.xaml.cs برنامه اضافه کنید

public App()
{
string str = System.IO.Path.GetFileName(System.Reflection.Assem bly.GetEntryAssembly().GetName().Name);
if (System.Diagnostics.Process.GetProcessesByName(str ).Length > 1)
{
MessageBox.Show("برنامه در حال اجرا است");
Application.Current.Shutdown();
}
}


سلام
با اين روش برنامه بعد از بستن ، بسته نميشه و پيغام رو ميده كه مجبور ميشم Process رو end كنم.

مهدی فرزاد
چهارشنبه 18 اسفند 1389, 13:47 عصر
سلام
با اين روش برنامه بعد از بستن ، بسته نميشه و پيغام رو ميده كه مجبور ميشم Process رو end كنم.

مشکل از این روش نیست از جای دیگه در برنامتون ممکنه باشه
الان من یک نمونه رو تست کردم و مشکل نداشت همون رو پیوست میکنم نگاه کنید ببینید روی سیستم شما باز اشکال داره؟؟