PDA

View Full Version : جلوگیری از هنگ در برنامه



policweb
شنبه 12 دی 1394, 13:40 عصر
سلام عزیزان به برنامه نوشتم که محتویان بسته های ip داخل شبکه رو روی لیست ویو نشون بده
اما تعداد بسته ها بالاست و موجب هنگ داءمی برنامه میشه
تقریبن میشه گفت شبیه ای پی اسکنره اما برای متوقف کردن این راهی نیست
ممنون میشم راهنمایی کنید.

communicator.ReceivePackets(0, PacketHandler);
public void PacketHandler(Packet pkt)
{
ListViewItem item;
// IpV4Datagram ip = pkt.Ethernet.IpV4;
// MessageBox.Show(ip.Source.ToString() + " " + ip.Destination.ToString() + " " + ip.Ttl.ToString() + " " + ip.Version.ToString() + " " + ip.HeaderLength.ToString() + " " + ip.Payload.ToString() + "/n", "quition?", MessageBoxButtons.OKCancel);


richTextBox1.Text += "ip:" + ip.Source.ToString() + "\n";
item = listView1.Items.Add(ip.Source.ToString());
item.SubItems.Add(ip.Destination.ToString());
item.SubItems.Add(ip.Ttl.ToString());
item.SubItems.Add(ip.Protocol.ToString());
}

zayens
شنبه 12 دی 1394, 14:35 عصر
بنداز توی ترد (thread) تا هنگ نکنه

policweb
شنبه 12 دی 1394, 15:53 عصر
متشکر از پاسخ شما
اما من هیچ اشنای با thread ندارم و تا حالا با این کار نکردم
امکانش هست یک توضیح در موردش بدید؟

cmsdqq2
شنبه 12 دی 1394, 19:47 عصر
سرچی کنید به شدت با انواع پروژه ها و مثال ها در مورد تردینگ آشنا میشین

c0mmander
شنبه 12 دی 1394, 22:46 عصر
با BackgroundWorker هم میتونید کار کنید.

https://msdn.microsoft.com/en-us/library/cc221403%28v=vs.95%29.aspx

http://www.codeproject.com/Articles/99143/BackgroundWorker-Class-Sample-for-Beginners

policweb
یک شنبه 13 دی 1394, 21:20 عصر
خیلی مچکرم از دوستانی که راهنمایی کردن در این تا اطلاعاتم بالا بره
اما دو روز از گذاشتین این پست میگذره اما با دیدن پروژه های متفاوت مطالعه در زمینهthread و ابزارهای اون
نتونستم مشکلمو رفع کنم روشهای مختلفی رو تست کردم جهت جلوگیری از هنگ برنامه اما هیچکدمشون جواب نداد.
خوشحال میشم کسی کمکم کنه
communicator.ReceivePackets(0, PacketHandler);

شروع شد بخاطر اینکه تعداد بسته های که داخل شبکه میگیره نامحدوده PacketHandlerهمه مشکلاتم از
و مشخص نیست کی متوقف میشه تازمانی که خود کاربر استوپ بزنه ولی بعد اجرای برنامه کل فرم هنگ میکنه
و هیچ کنترلی روی اشیا نیست public void PacketHandler(Packet pkt)
{
ListViewItem item;
// IpV4Datagram ip = pkt.Ethernet.IpV4;
// MessageBox.Show(ip.Source.ToString() + " " + ip.Destination.ToString() + " " + ip.Ttl.ToString() + " " + ip.Version.ToString() + " " + ip.HeaderLength.ToString() + " " + ip.Payload.ToString() + "/n", "quition?", MessageBoxButtons.OKCancel);


richTextBox1.Text += "ip:" + ip.Source.ToString() + "\n";
item = listView1.Items.Add(ip.Source.ToString());
item.SubItems.Add(ip.Destination.ToString());
item.SubItems.Add(ip.Ttl.ToString());
item.SubItems.Add(ip.Protocol.ToString());
}

policweb
دوشنبه 14 دی 1394, 00:05 صبح
IpV4Datagram ip = pkt.Ethernet.IpV4;
ip بعد اینکه پکت ها رو کپچر میکنه پشت سرهم هدر بسته های ای پی رو باز و نمایش میده
این کار مثل حلقه فور پشت سر هم اتفاق می افته که هیچ کنترلی روش نیست و موجب هنگ برنامه میشه
اگه کسی راه حلی میبینه لطفن مطرح کنه ممنون میشم

policweb
دوشنبه 14 دی 1394, 00:49 صبح
اینم تصویری از برنامه
138173