منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كود لمعرفة الحاسوب متصل بالشبكة أم لا
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
وضعت هذا الكود في تايمر كل تانية 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 

فقط ليكون اقتراحي مكتملSmile



شكرا أخي سعود حقا التحقق من عنوان الجهاز أسرع من التحقق من وجود مجلد

بحيث يأخد الأول ثانيتين ليصلك الجواب
أما التاني فأكثر من 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 

فقط ليكون اقتراحي مكتملSmile




(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
(31-05-19, 04:55 PM)sami4 كتب : [ -> ]
(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
الصفحات : 1 2