وضعت هذا الكود في تايمر كل تانية Timer
بحيت يعلمني هل الحاسوب الذي به قاعدة البيانات متصل بالشبكة أم لا
الكل شغال لكن عند سقوط الشبكة يتشنش البرنامج
و يتوقف الكل
أين الخطأ إخواني
على العلم إني استنتجت أن التايمر يتوقف عند السطر الأول فيأخد وقت طويل ليكتشف أنه الفولدر غير موجود
كود :
If My.Computer.FileSystem.FileExists(Trim("\\192.168.13.249\test")) = True Then
Label_CONNEXION.ForeColor = Color.Lime
Else
Label_CONNEXION.ForeColor = Color.Red
End If
مارايك بكود التحقق من عنوان الجهاز الرئيسي بغض النظر عن المجلد ؟
PHP كود :
Label2.Text = ""
Label2.BackColor = Me.BackColor
If My.Computer.Network.IsAvailable Then
If My.Computer.Network.Ping(tip.Text) = False Then
Label2.Text = "غير متصل"
Label2.ForeColor = Color.Red
Else
Label2.Text = " متصل"
Label2.ForeColor = Color.Green
End If
Else
Label2.Text = " لا توجد شبكة متصلة"
Label2.ForeColor = Color.White
Label2.BackColor = Color.Black
End If
فقط ليكون اقتراحي مكتمل
شكرا أخي سعود حقا التحقق من عنوان الجهاز أسرع من التحقق من وجود مجلد
بحيث يأخد الأول ثانيتين ليصلك الجواب
أما التاني فأكثر من 30 تانية
لكن كوني أضع الكود في تايمر يعمل كل تانية فهذا يسبب أيضا ثقل و تشنج للبرنامج
هل هناك أي فكرة أخي لاستخدام هذا الكود دون توقف البرنامج
بحيث يبقى التايمر لأنه مهم لمعرفة حالة الإتصال
(30-05-19, 08:43 PM)sniperjawadino كتب : [ -> ]وضعت هذا الكود في تايمر كل تانية Timer
بحيت يعلمني هل الحاسوب الذي به قاعدة البيانات متصل بالشبكة أم لا
الكل شغال لكن عند سقوط الشبكة يتشنش البرنامج
و يتوقف الكل
أين الخطأ إخواني
على العلم إني استنتجت أن التايمر يتوقف عند السطر الأول فيأخد وقت طويل ليكتشف أنه الفولدر غير موجود
كود :
If My.Computer.FileSystem.FileExists(Trim("\\192.168.13.249\test")) = True Then
Label_CONNEXION.ForeColor = Color.Lime
Else
Label_CONNEXION.ForeColor = Color.Red
End If
(31-05-19, 12:39 AM)سعود كتب : [ -> ]مارايك بكود التحقق من عنوان الجهاز الرئيسي بغض النظر عن المجلد ؟
PHP كود :
Label2.Text = ""
Label2.BackColor = Me.BackColor
If My.Computer.Network.IsAvailable Then
If My.Computer.Network.Ping(tip.Text) = False Then
Label2.Text = "غير متصل"
Label2.ForeColor = Color.Red
Else
Label2.Text = " متصل"
Label2.ForeColor = Color.Green
End If
Else
Label2.Text = " لا توجد شبكة متصلة"
Label2.ForeColor = Color.White
Label2.BackColor = Color.Black
End If
فقط ليكون اقتراحي مكتمل
(31-05-19, 12:41 PM)sniperjawadino كتب : [ -> ]شكرا أخي سعود حقا التحقق من عنوان الجهاز أسرع من التحقق من وجود مجلد
بحيث يأخد الأول ثانيتين ليصلك الجواب
أما التاني فأكثر من 30 تانية
لكن كوني أضع الكود في تايمر يعمل كل تانية فهذا يسبب أيضا ثقل و تشنج للبرنامج
هل هناك أي فكرة أخي لاستخدام هذا الكود دون توقف البرنامج
بحيث يبقى التايمر لأنه مهم لمعرفة حالة الإتصال
هذا كود يتم استدعائه مره واحده بالرغم ان فيه كود يعالج تكرار الاستدعاء
استدعيه في حدث تحميل الفورم مثلا
اعتمدت طريقت اظهار الحاله من رد الاستاذ سعود
واضفت اليه من اكواد بعض الاعضاء التي احتفظت بها لدي في ملف نصي
عند اللزوم غير اسم الليبل واسم التكست بوكس المشار اليهم بالكومنت
Public Sub CONNEXION()
Static r As Boolean
If r Then Return
Threading.Tasks.Task.Factory.StartNew(
Sub()
r = True
With Label2 ' Label
.Invoke(Sub()
.Text = "جار الفحص..."
.ForeColor = Color.DarkOrange
End Sub)
Do
Dim ipString As String = tip.Text ' TextBox
Try
Dim ip = Nothing
If Net.IPAddress.TryParse(ipString.Trim, ip) Then
If My.Computer.Network.IsAvailable Then
If My.Computer.Network.Ping(ip.ToString) = False Then
.Invoke(Sub()
.Text = "غير متصل"
.ForeColor = Color.Red
End Sub)
Else
.Invoke(Sub()
.Text = " متصل"
.ForeColor = Color.Green
End Sub)
End If
Else
.Invoke(Sub()
.Text = " لا توجد شبكة متصلة"
.ForeColor = Color.Black
End Sub)
End If
Else
.Invoke(Sub()
.Text = "عنوان غير صحيح"
.ForeColor = Color.Black
End Sub)
End If
Catch ex As Exception
.Invoke(Sub()
.Text = "عنوان غير صحيح"
.ForeColor = Color.Black
End Sub)
End Try
Threading.Thread.Sleep(100)
Loop
End With
End Sub)
End Sub
شكرا كثيرا أخي سامي على المساعدة
ممكن أين أضع الكود
وضعته في الفورم و الكلاس و الموديل لكن يعطيني خطأ
مثال مرفق
(31-05-19, 04:46 PM)sniperjawadino كتب : [ -> ]شكرا كثيرا أخي سامي على المساعدة
ممكن أين أضع الكود
وضعته في الفورم و الكلاس و الموديل لكن يعطيني خطأ
مثال مرفق
حسب المثال المرفق احذف الموديل
ثم ضع الكود في كلاس الفورم
وغير Label2 باسم الليبل اللي عندك Label_CONNEXION مثل
With Label_CONNEXION ' Label
وغير tip.text بال ip الذي تريده مثل
Dim ipString As String = "192.168.13.249" ' TextBox
أخي سامي حقا مبدع
شكرا لك كثيرا
في الأول وضعت دالة CONNEXION() في تايمر ليشتغل كل دقيقة
لكن بعد قراءة الكود جيدا وجدتك استعملت Do Loop و بالتالي وجدت أنه لا داعي للتايمر لأن الكود سيشتغل دون توقف
و هذا ما كنت أبحث عنه
سؤال أخي
هل استعمالي لهذه الدالة ليوم كامل لن يقع أي تقل في بروسيسور الحاسوب ؟
----------------------
فهذا الكود thread من بين الأشياء التي لم أجد لها شرح استوعبه و اطبقه و ينجح معي
لكن الكود الذي منحتني اشتغل معي
رغم صعوبة كتابته.... لكن سأحاول أن أجتهد فيه لكي أفهمه و أطبقه في أشياء أخرى
من بين المشاكل التي واجهتني في thread هي خروج رسالة خطأ في بعض الأحيان دون معرفة السبب
و أصعب شيئ بالنسبة لي في البرمجة هو مشكل "خروج رسالة خطأ في بعض الأحيان" لأن الخطأ ليس منطقي و بالتالي لا أستطيع معالجة الخطأ عندما أشغل الكود
شكرالك و جزاك الله على علمك
إقتباس :فهذا الكود thread من بين الأشياء التي لم أجد لها شرح استوعبه و اطبقه و ينجح معي
اخي الكريم ... يمكنك استخدام Backgroundworker فهي تسهل عليك فهم الثريد.
نعم أخي سعود
وجدت شروحات الأعضاء في المنتدى جزاكم الله كل خير
على موضوع
Backgroundworker
لكن لم أفلح في تطبيقها على ما أريد
فمثلا أين أضع هذا الكود البسيط في حتى لا يتشنج البرنامج
تتبعت عدة شروحات لكن لم أصل لهذه النقدة البسيطة
"تشغيل كود أو تشغيل فورم يعمل لوحده دون تشنج البرنامج"
كود الأخ سامي اشتغل معاي جزاه الله على وقته
فقط من باب الاستفادة مع Backgroundworker
كود :
If My.Computer.FileSystem.FileExists(Trim("\\192.168.13.249\test")) = True Then
Label_CONNEXION.ForeColor = Color.Lime
Else
Label_CONNEXION.ForeColor = Color.Red
End If