PDA

View Full Version : سوال: myThread.Abort()



m_ali_gho
جمعه 01 شهریور 1392, 19:32 عصر
سلام
دوستان چطور میشه یک thread رو که در حال انجام کاری هستش Abort کرد؟

shahryari
جمعه 01 شهریور 1392, 19:34 عصر
متد Abort را برای ترد درحال اجرا فراحوانی کن
myThread.Abort()


نکته: اگر درحالت اسلیپ باشه باید اول thread.join(); را فراخوانی کنی

m_ali_gho
جمعه 01 شهریور 1392, 19:41 عصر
خیلی ممنون اما اینو میدونم مشکل از اینجا نیست. مشکل اینه که myThread در حال انجام کاری هستش. یعنی روی یک خط خاص قفل شده و تا کار اون خط تموم نشه یه جورایی میشه گفت freeze شده برای همین هم نمیشه اونو abort کرد

FastCode
جمعه 01 شهریور 1392, 20:03 عصر
من راجع به شما و روش کد نویسیتون چیزی نمیدونم ولی من کور نیستم و وقتی راجع به یک کد صحبت میکنم معمولا جلوی چشممه.
لطفا کدتون رو هم بزارید.

m_ali_gho
جمعه 01 شهریور 1392, 20:15 عصر
متوجه نشدم ب چه دلیلی این حرفو زدین اما اگه احتمالا بهتون بی احترامی شده من معذرت می خوام

Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
ipendpoint = new IPEndPoint(IPAddress.Any, 1800);
listener.Bind(ipendpoint);
listener.Listen(100);
try
{
listener = listener.Accept();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
button1.Enabled = true;


مشکلش با این خط هستش
listener = listener.Accept();

تو رویداد form_closing دستور abort رو فرا خونی میکنم ارورش هم اینه:

a blocking operations was interrupted by a call toWSACancleBlockingCall

FastCode
جمعه 01 شهریور 1392, 21:19 عصر
معمولا وقتی سوال میپرسند کد رو هم میزارن.
این هم راه حلتون:
http://msdn.microsoft.com/en-us/library/bysfec7w.aspx

مهرداد صفا
جمعه 01 شهریور 1392, 21:21 عصر
با سلام.
استفاده از AcceptAsync (http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28SYSTEM.NET.SOCKETS.SOCKET.ACCEPTASYNC%29;k%2 8VS.OBJECTBROWSER%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29&rd=true) و BeginAccept (http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28SYSTEM.NET.SOCKETS.SOCKET.BEGINACCEPT%29;k%2 8VS.OBJECTBROWSER%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29&rd=true) به جای استفاده از یک thread مجزا را امتحان کنید.