PDA

View Full Version : سوال: مشکل در چند سرنخی



Saeed Hamed
پنج شنبه 29 مرداد 1388, 23:23 عصر
سلام دوستان.
من زمانی که در بک روال که به صورت چند سرنخی یا Backgrand اجرا شده است مقدار یک کنترل رو تغییر می دم با خطا مواجه می شوم. می خواستم ببینم کسی می تونه توی این زمینه کمکم کنه. راستی از Sync loock هم استفاده کرم ولی باز هم نمیشه.
با تشکر از همۀ دوستان:لبخندساده:

anooshiran
پنج شنبه 29 مرداد 1388, 23:53 عصر
سلام دوست عزيز
شما بايد از delegate استفاده كنيد.

اگر نمونه كدي را كه به مشكل خورده در سايت بگذاريد و تو ضيحات بيشتري مرقوم فرماييد مي توان مشكل را حل كرد

Ali_Mor
پنج شنبه 29 مرداد 1388, 23:59 عصر
http://www.barnamenevis.org/forum/showthread.php?t=149308

http://www.barnamenevis.org/forum/showthread.php?t=153037

Saeed Hamed
جمعه 30 مرداد 1388, 00:12 صبح
اگر نمونه كدي را كه به مشكل خورده در سايت بگذاريد و تو ضيحات بيشتري مرقوم فرماييد مي توان مشكل را حل كرد

دوست عزیز از راهنماییت ممنونم ولی من این کار رو بلد نیستم. من می خوام اطلاعات یک پورت سریال رو بخونم و از اونجایی که اون یک Thread است این مشکل پیش میاد.
کدی رو هم که من استفاده می کنم به صورت زیر است اگر امکان داره در خصوص تغریف Delegate راهنمایی بفرمایید



Private Sub Port1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles Port1.DataReceived
TextBox1.Text = Port1.ReadExisting
End Sub

anooshiran
جمعه 30 مرداد 1388, 11:52 صبح
سلام دوست عزيز

كد زير مشكلت را حل مي كند.




Delegate Sub SetTextCallback(ByVal NewText As String)
Private Sub ChangeText(ByVal NewText As String)
If Me.TextBox1.InvokeRequired Then
Dim d As New SetTextCallback(AddressOf ChangeText)
Me.Invoke(d, New Object() {NewText})
Else
Me.TextBox1.Text = NewText
End If
End Sub
Private Sub Port1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles Port1.DataReceived
Me.ChangeText(Port1.ReadExisting)
End Sub