سلام دوستان
میخوام کل سیستم های فعال در شبکه رو نشون بدم
این کار مدتی زمان میبره و در طی این مدت که اصطلاحا پینگ گرفته میشه برنامه هنگ میکنه!
جستجو کردم فهمیدم باید از backgroundworker استفاده کنم!
ولی بلد نیستم
ممنون میشم راهنمایی کنین
سلام دوستان
میخوام کل سیستم های فعال در شبکه رو نشون بدم
این کار مدتی زمان میبره و در طی این مدت که اصطلاحا پینگ گرفته میشه برنامه هنگ میکنه!
جستجو کردم فهمیدم باید از backgroundworker استفاده کنم!
ولی بلد نیستم
ممنون میشم راهنمایی کنین
سلام
ی سرچ بزن تو سایت اموزش های زیادی در مورد کار کردن با این component هست (مطالب خیلی ساده هست و براحتی متوجهشون میشی)
مختصرا توضیح میدم و توضیحات تکمیلی رو خودتون مطالعه کنید
این component سه رویداد داره! DoWork و ProgressChanged و Completed
خب شما کدهایی رو که قراره به صورت غیرهمگام اجرا کنید رو در رویداد DoWork قرار میدید ( که در مورد کار شما میشه همون ping گرفتن ها )
در رویداد DoWork نتایج حاصله از کارتون رو با استفاده از متد ReportProgress به رویداد ProgressChanged میفرستید و در این رویداد هم با استفاده از پارامتر e مقادیر ارسالی رو از DoWork دریافت میکنید و نمایش میدید و یا هر چیز دیگه ... (e.ProgressPercentage , e.UserState)
چندتا نکته هست که طی مطالعه Backgroundworker ها متوجه میشه
موفق باشی
این لینک رو ببین
ممنون دوستان
ولی هر کار میکنم نمیتونم کدش رو بنویسم!
کد اصلی من اینه:
System.Diagnostics.Process pr = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo pstart = new System.Diagnostics.ProcessStartInfo("cmd.exe");
pstart.CreateNoWindow = true;
//pstart.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
pstart.UseShellExecute = false;
pstart.RedirectStandardOutput = true;
pstart.RedirectStandardInput = true;
pr.StartInfo = pstart;
pr.Start();
System.IO.StreamReader reader = pr.StandardOutput;
System.IO.StreamWriter writer = pr.StandardInput;
writer.WriteLine("net view");
writer.Close();
this.listBox1.Items.Clear();
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
if (line.StartsWith("\\"))
{
line = line.Replace("\\", "");
this.listBox1.Items.Add(line);
}
}
pr.WaitForExit();
pr.Close();
}
سلام
مطالعه کردین در مورد Backgroundworker ؟
تمام کدهایی که بررسی میکنن ایا سیستم با شبکه در تعامل هست رو در رویداد DoWork قرار میدین تا این کارها همزمان با اجرای برنامه انجام بشن (به صورت غیر همگام )
و انتهای پروسه نتیجه رو با استفاده از متد ReportProgress گزارش میدین ( بالا توضیح دادم )
لازمه کار اینکه که در مورد backgroundworker ها مطالعه کنید
ی مثال پیوست کردم
در صورتی که بخواین حین انجام کار در DoWork گزارشی رو ارسال کنید باید خاصیت WorkerReportsProgress رو true کنید