PDA

View Full Version : چاپ خروجی بر روی تکست باکس در backgroundworker



ILYA20
دوشنبه 08 آبان 1396, 22:52 عصر
با سلام و درود خدمت دوستان



دلیل استفاده بنده از backgroundworker :
به عنوان مثال از دستور زیر برای کار روی یک پروسه استفاده میکنم



Dim oProcess As New Process()
Dim oStartInfo As New ProcessStartInfo("cmd.exe", "/c cd tmp & apktool d framework-res.apk")
oStartInfo.WindowStyle = ProcessWindowStyle.Hidden
oStartInfo.CreateNoWindow = True
oStartInfo.UseShellExecute = False
oStartInfo.RedirectStandardOutput = True
oProcess.StartInfo = oStartInfo
oProcess.Start()
Dim sOutput As String
Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput
sOutput = oStreamReader.ReadToEnd()
End Using
TextBoxSamLog.AppendText(Environment.NewLine & sOutput)



اما نرم افزار تا زمان اتمام پروسه هنگ میمونه ما برای جلوگیری از هنگی نرم افزار از backgroundworker استفاده کردیم اما نمیشه در backgroundworker خاصیت ابزارها رو تغییر داد (مثلا بر روی یک تکست باکس خروجی را چاپ کرد) اگه جز backgroundworker گزینه ای برای جلوگیری از هنگی نرم افزار بوده باشه بفرمایید

با استفاده از راهنمایی این (http://barnamenevis.org/showthread.php?543162-%D9%87%D9%86%DA%AF-%DA%A9%D8%B1%D8%AF%D9%86-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%A8%D9%87-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%DA%A9%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%A8%DA%A9-%DA%AF%D8%B1%D9%86%D8%AF)تایپک از thread استفاده کردم اما thread به دلیل یک بار مصرف بودن (بعد از یک بار استفاده نیاز میشه که نرم افزار بسته و دوباره اجرا بشه) به درد ما نمیخوره

چطوری میتونیم خروجی کار را در backgroundworker بر روی تکست باکس چاپ کنیم ؟
راهنمایی لطفا

336699
سه شنبه 09 آبان 1396, 10:36 صبح
با سلام و درود خدمت دوستان



دلیل استفاده بنده از backgroundworker :
به عنوان مثال از دستور زیر برای کار روی یک پروسه استفاده میکنم



Dim oProcess As New Process()
Dim oStartInfo As New ProcessStartInfo("cmd.exe", "/c cd tmp & apktool d framework-res.apk")
oStartInfo.WindowStyle = ProcessWindowStyle.Hidden
oStartInfo.CreateNoWindow = True
oStartInfo.UseShellExecute = False
oStartInfo.RedirectStandardOutput = True
oProcess.StartInfo = oStartInfo
oProcess.Start()
Dim sOutput As String
Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput
sOutput = oStreamReader.ReadToEnd()
End Using
TextBoxSamLog.AppendText(Environment.NewLine & sOutput)



اما نرم افزار تا زمان اتمام پروسه هنگ میمونه ما برای جلوگیری از هنگی نرم افزار از backgroundworker استفاده کردیم اما نمیشه در backgroundworker خاصیت ابزارها رو تغییر داد (مثلا بر روی یک تکست باکس خروجی را چاپ کرد) اگه جز backgroundworker گزینه ای برای جلوگیری از هنگی نرم افزار بوده باشه بفرمایید

با استفاده از راهنمایی این (http://barnamenevis.org/showthread.php?543162-%D9%87%D9%86%DA%AF-%DA%A9%D8%B1%D8%AF%D9%86-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%A8%D9%87-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%DA%A9%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%A8%DA%A9-%DA%AF%D8%B1%D9%86%D8%AF)تایپک از thread استفاده کردم اما thread به دلیل یک بار مصرف بودن (بعد از یک بار استفاده نیاز میشه که نرم افزار بسته و دوباره اجرا بشه) به درد ما نمیخوره

چطوری میتونیم خروجی کار را در backgroundworker بر روی تکست باکس چاپ کنیم ؟
راهنمایی لطفا

سلام
خط آخر رو به این شکل تغییر بده


TextBoxSamLog.Invoke(Sub() TextBoxSamLog.AppendText(Environment.NewLine & sOutput))

ILYA20
سه شنبه 09 آبان 1396, 12:58 عصر
سلام
خط آخر رو به این شکل تغییر بده


TextBoxSamLog.Invoke(Sub() TextBoxSamLog.AppendText(Environment.NewLine & sOutput))




بسیار سپاسگذارم از شما عزیز

مشکل حل شد :قلب: