1 ضمیمه
مشکل برنامه های اجرا شده در استارت آپ ویندوز با خواندن اطلاعات از sql
با سلام خدمت دوستان،
در مورد اجرا شدن برنامه در هنگام بالا آمدن ویندوز و اضافه کردن به رجیستری مطالب زیادی وجود دارد، و براحتی فایل های exe در startup اجرا میشوند، ولی درصورتیکه برنامه یک سری اطلاعات از sql بخواند error بوحود میاد.
در برنامه ی من از sqlexpress 2008 استفاده شده، تصویر error را گذاشتم، فقط جالب اینجاست این مسئله ربطی به زمان گذشتن از بالا آمدن ویندوز نداره، چون برنامه واسطی قرار دادم تا برنامه مشکل دارم که از sql میخونه بعد از 10 دقیقه از شروع کار ویندوز باز کنه ولی باز همین error را داد
ممنون میشم راهنماییم کنید
نقل قول: مشکل برنامه های اجرا شده در استارت آپ ویندوز با خواندن اطلاعات از sql
رو سیستم .Net Framework چند نصب کردی.؟ و ظاهرا پیغام میگه که فایل دیگری همنام دیتابیس وجود داره. نامی دیتابیس رو عوض کن ببین مشکلت حل میشه؟
نقل قول: مشکل برنامه های اجرا شده در استارت آپ ویندوز با خواندن اطلاعات از sql
netframfork4، نه دوست عزیز اگر مشکل این بود موقعی که فایل exe بصورت عادی با کلیک اجرا میشد باز ایراد میگرفت ولی اینطور نیست به درستی اجرا میشه
نقل قول: مشکل برنامه های اجرا شده در استارت آپ ویندوز با خواندن اطلاعات از sql
دوستان ممنون میشم اگه برنامه ای رو خود شما بصورت خیلی ساده بنویسید که از sql express اطلاعات بخونه و در startup اجرا شه، بعد ببینیم شما هم به این مشکل بر میخورید یا نه
نقل قول: مشکل برنامه های اجرا شده در استارت آپ ویندوز با خواندن اطلاعات از sql
برنامه باید صبر کنه تا پروسس sqlserver ران بشه بعد ازش اطلاعات دریافت کنه.
یک راه اینه که ترد رو sleep کنید تا پروسس اجرا بشه:
bool isRun;
public FrmMain()
{
InitializeComponent();
while (!isRun)
{
Process[] processes = Process.GetProcessesByName("sqlservr");
if (processes != null)
{
isRun = true;
}
else
{
System.Threading.Thread.Sleep(1000);
}
}
}
نقل قول: مشکل برنامه های اجرا شده در استارت آپ ویندوز با خواندن اطلاعات از sql
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
برنامه باید صبر کنه تا پروسس sqlserver ران بشه بعد ازش اطلاعات دریافت کنه.
یک راه اینه که ترد رو sleep کنید تا پروسس اجرا بشه: ...
نقل قول:
نوشته شده توسط
hadilionson
... فقط جالب اینجاست این مسئله ربطی به زمان گذشتن از بالا آمدن ویندوز نداره، چون برنامه واسطی قرار دادم تا برنامه مشکل دارم که از sql میخونه بعد از 10 دقیقه از شروع کار ویندوز باز کنه ولی باز همین error را داد ...
دقت کنید!
نقل قول: مشکل برنامه های اجرا شده در استارت آپ ویندوز با خواندن اطلاعات از sql
ممنونم از پاسختون، روشی که شما استفاده کردید اصولی تر هست
برای sqlexpress باید
Process[] processes = Process.GetProcessesByName("sqlsExpress");
استفاده کنم؟
نقل قول: مشکل برنامه های اجرا شده در استارت آپ ویندوز با خواندن اطلاعات از sql
بهترین راه برای یافتن زمان لود شدن sql با توجه به متفاوت بودن نوع آن، چک کردن service های ویندوز است که با دستورات زیر انجام میشه، البته برای چک کردن هر سرویسی بهترین راه همین هست
using System.ServiceProcess;
ServiceController sc = new ServiceController("MSSQL$SQLEXPRESS");
while (sc.Status != ServiceControllerStatus.Running)
{
System.Threading.Thread.Sleep(1000);
}
string path = "";
string[] p = Application.ExecutablePath.Split(new char[] { '\\' });
for (int i = 0; i < p.Length - 1; i++)
{
path += p[i] + @"\";
}
path += "Alert.exe";
System.Diagnostics.Process.Start(path);
Application.Exit();
ولی مشکل من بالا آمدن sql نیست، پیغامی که براتون گذاشتم بعد از بالا آمدن کامل sql درصورتیکه برنامه با Process.start("ExeName")
اجرا بشه ایراد میگیره واقعاً برام گیج کنندست
ممنون میشم کسی بتونه راهنمایی کنه
نقل قول: مشکل برنامه های اجرا شده در استارت آپ ویندوز با خواندن اطلاعات از sql
دوستان عزیز، خوشبختانه مشکل من حل شد، توضیحات و برای اون دسته میدم که شاید یه وقت با این مسئله روبرو شدند
بهترین کار برای اجرای برنامه ای که دیتابیس sql داره ابتدا اجرای یک فایل exe واسطه هست که بعد از تکمیل لود شدن sql که در بالا توضیح داده شد، فایل exe اصلی به روش زیر فرا خوانده شه در رویداد load فرم واسطه این کد را قرار دهید
private void Form1_Load(object sender, EventArgs e)
{
ServiceController sc = new ServiceController("MSSQL$SQLEXPRESS");
while (sc.Status != ServiceControllerStatus.Running)
{
System.Threading.Thread.Sleep(1000);
}
string path = "";
string[] p = Application.ExecutablePath.Split(new char[] { '\\' });
for (int i = 0; i < p.Length - 1; i++)
{
path += p[i] + @"\";
}
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.FileName = "program.exe";
startInfo.WorkingDirectory = path;
startInfo.UseShellExecute = false;
System.Diagnostics.Process.Start(startInfo);
Application.Exit();
}
این کد با خط startInfo.UseShellExecute = false;
به نتیجه خواهد رسید که باعث میشه فایل exe مانند کلیک کردن بر روی exe اجرا گردد
نقل قول: مشکل برنامه های اجرا شده در استارت آپ ویندوز با خواندن اطلاعات از sql
دوست عزیز :
بنده از کدهایی که نوشتید خیلی سر در نیاوردم. میشه توضیح بدید که این کدها چیکار میکنند؟
البته چیزهایی که متوجه شدم اگه درست باشه اینه که : تا زمان لود MSSQL$SQLEXPRESS برنامه باید صبرکنه. بعدش هم آدرس مسیر را توی یه آرایه ریختی(چرا؟)
بعدش هم نمیدونم چه اتفاقی داره میفته. میشه دقیقتر توضیح بدید؟
نقل قول: مشکل برنامه های اجرا شده در استارت آپ ویندوز با خواندن اطلاعات از sql
دوست من، کد هایی که اشاره شده، برای اجرای درست فایل exe است، برای اینکار لازمه آدرسه فایل اگزه خودت رو بدست بیاری، تو این برنامه، فایل exe فایل جداگانه ای در پوشه اصلی برنامه هست، ما ابتدا مسیر پوشه اصلی را بدست آوردیم، بعد هم اون را به روش صحیح اجرا کردیم، workingdirectory، آدرس پوشه ای که exe در اون قرار داره را میگیره، که همان پوشه ای است که نرم افزار اصلی ما در آن قرار داره، اسم فایل exe که میخواهیم اجرا کنیم هم همان program.exe میباشه،
موفق باشی