هنگ کردن نرم افزار به هنگام کار در بک گرند
با سلام و درود خدمت دوستان عزیز
بنده از دستور زیر برای رایت کرد فایل رو دستگاه اندرویدی در وی بی دات نت استفاده میکنم
TextBox1.AppendText(Environment.NewLine & Fastboot.ExecuteFastbootCommand(Fastboot.FormFastb ootCommand("flash boot", textboxboot.Text)))
عملیات رایت رو انجام میده ولی تا زمان رایت ، نرم افزار هنگ میمونه بعد از رایت خروجی کار رو روی TEXTBOX نشون میده و نرم افزار از حالت هنگ خارج میشه ...
چطور میتونیم کاری کنیم وقتی که نرم افزار در حین کار هست هنگ نباشه و عملیات کار را روی TEXTBOX چاپ کنه ؟
من این سوال رو از دوست هندیم پرسیدم گفت این رو توی گوگل جستجو کن :
Kpstv, [۱۵.۱۰.۱۷ ۱۵:۲۹]
Umm add an event handler to capture real time output
Kpstv, [۱۵.۱۰.۱۷ ۱۵:۲۹]
Searvj on google
ILYA20, [۱۵.۱۰.۱۷ ۱۵:۳۰]
excuse me
I really did not understand
Kpstv, [۱۵.۱۰.۱۷ ۱۵:۳۱]
Search on Google 'how to capture real time output of process using event handler VB'
راهنمایی لطفا
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
اگر شما در محیط ویژوال استادیو کار میکنید میتونید این دستور رو درون BackgroundWorker بنویسید یا با Threading این کار رو انجام بدین.البته نظرات دوستان قطعا بهتر خواهد بود
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
نقل قول:
نوشته شده توسط
hamidrezax1
اگر شما در محیط ویژوال استادیو کار میکنید میتونید این دستور رو درون BackgroundWorker بنویسید یا با Threading این کار رو انجام بدین.البته نظرات دوستان قطعا بهتر خواهد بود
ممنون عزیز
بله بنده ویژوال استادیو کار میکنم
میتونید یک مثال بزنید
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
دوست عزیز در فرمت دو عدد باتن قرار بده و دو لیبل به مقدارشون تکست اونها صفر باشه اونوقت این دستورات کپی کن
Public Class Form1 Dim a As New Threading.Thread(AddressOf H1)
Dim i As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CheckForIllegalCrossThreadCalls = False
a.Start()
End Sub
Private Sub H1()
For i = Me.Label1.Text To 100000
Me.Label1.Text = i
If Me.Label2.Text = 2 Then
MsgBox("سلام")
Me.Label2.Text = 0
End If
Application.DoEvents()
Next
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Label2.Text = 2
End Sub
End Class
در دستورات بالا اول یک ترد معرفی کردم تا کاری رو که میخوای انجام بدی بدون وقفه درون اون ترد انجام بشه همچنین در زمان اجرا فرمت از حالت هنگی خارج میشه و با کلیک بر روی باتن دوم میتونی حتی این عملیات رو متوقف کنی
این برای الهام گرفتن می باشد
موفق و پیروز باشید
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
ببخشید دوست عزیز موضوع کمی برام گنگ شد (ما که تازه کاریم :لبخند:)
تو پروژه ما نیازی به لیبل نیست شما فرض کنید یک دکمه هست که آدرس فایل را از تکست باکس میگیره و عملیات رایت فایل را روی دستگاه انجام میده از دستور شما سر در نیاوردم و نتونستم به عنوان مثال هم ازش بهره ببرم
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
نقل قول:
نوشته شده توسط
ILYA20
ببخشید دوست عزیز موضوع کمی برام گنگ شد (ما که تازه کاریم :لبخند:)
تو پروژه ما نیازی به لیبل نیست شما فرض کنید یک دکمه هست که آدرس فایل را از تکست باکس میگیره و عملیات رایت فایل را روی دستگاه انجام میده از دستور شما سر در نیاوردم و نتونستم به عنوان مثال هم ازش بهره ببرم
سلام
شما سورس پروژه رو ارسال کن ، تا راحت تر بشه راهنمایی کرد.
اگه ما با فرضیات خودمون بخواهیم مثال بزنیم ، موضوع گنگ میشه :گیج:
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
نقل قول:
نوشته شده توسط
336699
سلام
شما سورس پروژه رو ارسال کن ، تا راحت تر بشه راهنمایی کرد.
اگه ما با فرضیات خودمون بخواهیم مثال بزنیم ، موضوع گنگ میشه :گیج:
بفرمایید
Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
TextBox1.Clear()
If PictureBox1.BackColor = Color.GreenYellow Then
If Trim(TextBoxsideload.Text).Length > 0 Then
TextBox1.AppendText(Environment.NewLine & Adb.ExecuteAdbCommand(Adb.FormAdbCommand("sideload ", TextBoxsideload.Text)))
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
نقل قول:
نوشته شده توسط
ILYA20
بفرمایید
Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
TextBox1.Clear()
If PictureBox1.BackColor = Color.GreenYellow Then
If Trim(TextBoxsideload.Text).Length > 0 Then
TextBox1.AppendText(Environment.NewLine & Adb.ExecuteAdbCommand(Adb.FormAdbCommand("sideload ", TextBoxsideload.Text)))
یعنی کل برنامه شما همین سه خطه
کل پروژه رو zip کنید بفرستید .
در ضمن بسته به اینکه ورژن دانت نت مورد استفاده چند هستش ، کدها متفاوت خواهد بود.
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
نقل قول:
نوشته شده توسط
336699
یعنی کل برنامه شما همین سه خطه
کل پروژه رو zip کنید بفرستید .
در ضمن بسته به اینکه ورژن دانت نت مورد استفاده چند هستش ، کدها متفاوت خواهد بود.
به عنوان نمونه کاملش رو جدا ایجاد کردم
خدمت شما
Imports System.IO
Imports System.IO.Path
Imports System.Threading.Tasks
Imports System.Diagnostics
Imports System.Net
Imports System.ComponentModel
Imports RegawMOD.Android
Public Class Form1
Dim android As AndroidController
Dim device As Device
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
OpenFileDialog1.FileName = "Select flashable.zip File"
OpenFileDialog1.Filter = "Zip File|*.zip"
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
TextBox2.Text = OpenFileDialog1.FileName
'Me.TextBoxsideload.Text = Me.TextBoxsideload.Text.Replace(" ", "")
TextBox2.Enabled = True
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox1.Clear()
If Trim(TextBox2.Text).Length > 0 Then
TextBox1.AppendText(Environment.NewLine & Adb.ExecuteAdbCommand(Adb.FormAdbCommand("sideload ", TextBox2.Text)))
Else
TextBox1.AppendText(Environment.NewLine & "You have not selected a file. Please select a file then try again")
End If
End Sub
End Class
متاسفانه نمیتونیم بسته رو اپلود کنیم برای تست و راه اندازی الگوریتم هامون روی دستگاه خیلی وقت گذاشتیم :بوس:
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
Dim a As New Threading.Thread(AddressOf H1) Dim i As Integer
Private Sub H1()
TextBox1.AppendText(Environment.NewLine & Adb.ExecuteAdbCommand(Adb.FormAdbCommand("sideload ", TextBox2.Text)))
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox1.Clear()
If Trim(TextBox2.Text).Length > 0 Then
CheckForIllegalCrossThreadCalls = False
a.Start()
Else
TextBox1.AppendText(Environment.NewLine & "You have not selected a file. Please select a file then try again")
End If
End Sub
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
نقل قول:
نوشته شده توسط
hamidrezax1
Dim a As New Threading.Thread(AddressOf H1) Dim i As Integer
Private Sub H1()
TextBox1.AppendText(Environment.NewLine & Adb.ExecuteAdbCommand(Adb.FormAdbCommand("sideload ", TextBox2.Text)))
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox1.Clear()
If Trim(TextBox2.Text).Length > 0 Then
CheckForIllegalCrossThreadCalls = False
a.Start()
Else
TextBox1.AppendText(Environment.NewLine & "You have not selected a file. Please select a file then try again")
End If
End Sub
با تشکر از شما عزیز
مشکل حل شد
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
دوستان عزیز این دستور یک مشکلی داره
اینکه بعد از یک بار نمیشه دوباره استفادش کرد باید نرم افزار دوباره اجرا بشه تا کار کنه
بعد از اتمام پروسه Thread اگر بخوابم دوباره دستور را با استفاده از دکمه اجرا کنیم برای پروسه خطا میگیره
من فکر میکنم بعد از استارت Thread اجرا باقی میمونه به همین خاطر برای استارت آن خطا میگیره ... چطوری میشه بعد از اتمام پروسه thread اون رو بست ؟
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
سلام دوست عزیز در خصوص پروسه کاری برنامه تون یکم توضیح میدین
منظورم اینه که یه پروسه از اول تا آخر اجرا میشه و نیاز هست مجددا اجرا بشه یا بایستی یه وقفه در برنامه صورت بگیره؟
لطفا توضیح بدین تا بشه راهنمایی کرد
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
نقل قول:
نوشته شده توسط
hamidrezax1
سلام دوست عزیز در خصوص پروسه کاری برنامه تون یکم توضیح میدین
منظورم اینه که یه پروسه از اول تا آخر اجرا میشه و نیاز هست مجددا اجرا بشه یا بایستی یه وقفه در برنامه صورت بگیره؟
لطفا توضیح بدین تا بشه راهنمایی کرد
ممنون از شما .
فرض کنید یک دکمه به فرم تعریف کردیم که با کلیک روی اون thread اجرا میشه و کارشو انجام میده
برای بار اول که کلیک کردیم هیچ مشکلی نداره thread اجرا میشه و کارشو میکنه
اما بعد از اتمام پروسه thread ... بخوایم دوباره کلیک کنیم تا thread دوباره کاری که تعریف کردیم را انجام بده خط thread1.start() خطا میگیره و کار نمیکنه و باید نرم افزار را ببندیم و دوباره باز کنیم تا بتونیم ازش استفاده کنیم
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
منظور من اینه که این کلیک زمانش مشخصه یا نه؟؟؟
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
نقل قول:
نوشته شده توسط
hamidrezax1
منظور من اینه که این کلیک زمانش مشخصه یا نه؟؟؟
خیر
مثلا کاربر به دلخواه میخواد بعد از انجام اولین کار دوباره اینکارو انجام بده خب اونوقت به مشکل برمیخوره
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
دوست عزیز معمولا از ترد برای دستورات یکبار اجرا و یا زمانی که نیاز دستوری در یک ترد از سی پی یو انجام بشه استفاده میشه تا بقیه ترد ها بتونن کارهای دیگه رو انجام بدن.توی این دستورات میشه وقفه ایجاد کرد ولی فراخوانی مجدد بعید بدونم.پیشنهاد میکنم شما هم مثل برنامه قدرتمند نرو پس از هر بار رایت سی دی برنامه رو بسته و مجددا اجرا نمایید.حتی توی یک فرم که نیاز نباشه کل برنامه رو ببندید
موفق باشید
نقل قول: هنگ کردن نرم افزار به هنگام کار در بک گرند
نقل قول:
نوشته شده توسط
hamidrezax1
دوست عزیز معمولا از ترد برای دستورات یکبار اجرا و یا زمانی که نیاز دستوری در یک ترد از سی پی یو انجام بشه استفاده میشه تا بقیه ترد ها بتونن کارهای دیگه رو انجام بدن.توی این دستورات میشه وقفه ایجاد کرد ولی فراخوانی مجدد بعید بدونم.پیشنهاد میکنم شما هم مثل برنامه قدرتمند نرو پس از هر بار رایت سی دی برنامه رو بسته و مجددا اجرا نمایید.حتی توی یک فرم که نیاز نباشه کل برنامه رو ببندید
موفق باشید
ابزار ما یک ابزار عمومی هست و همتای ابزار ما تو اینترنت زیاده این واقعا کمی مسخره میشه برای تکرار یک کاری دوباره نرم افزار نیاز به باز و بسته شدن داشته باشه ...
هنگی نرم افزار مهم نیست از backgroundworker استفاده میکنم و چون بکگرند ورکر خروجی کار رو روی تکست باکس چاپ نمیکنه برای بک گرند ورکر از thread استفاده کردم این thread هم این مشکل رو داره
جز thread از گزینه دیگری میتونیم استفاده کنیم؟