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

نسخة كاملة : عايز كود خاص بقياس السرعة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
عايز اعمل عداد سرعة الانترنت عند تشغيل رابط فى الويب داخل المشروع

زاى كدة 
النوع هذا من الكونترول إما أن تشتريه من شركات او تكتب الكود الخاص به بنفسك
و علي ما أعتقد بعض المواقع البرمجية بها كود مفتوح المصدر لمثل هذا النوع من الكونترول
عموما الحل الاسهل لك هو ان تستخدم الكلاس StopWatch بحيث تبدأ الكلاس عند الضغط علي اللينك و الكلاس علي ما اعتقد به عداد ثم تقوم بإيقاف الكلاس عند الانتهاء من تحميل الصفحة بالكامل
اخى اشترى ايه ؟ انا اصدى زاى برنامج التحميل كده لما باجى احمل رابط بيبقى فى عداد بيقراء سرعة النت الخاصة بى وهو بيحمل انا عايز بدل ما يقراء السرعة من ملف تحميل لا يقراءة عند تشغيل رابط فى الويب فى المشروع الخاص بى بس

اخى انا بحثت كثير ولكن مش عارف اعملو عشان كده قولت حد بساعدنى بالكود
انا فقط حين رأيت الصورة الموجودة في سؤالك اعتقدت انك  تريد استخدام كونترول مشابه للموجود في الصورة
استخدم ProgressBar مع الكلاس StopWacth بحيث ان ProgressBar تاخذ القيمة الخاصة بها من StopWach
,وهذا الاسهل لك تماما لأن كتابة الكود الخاصة به ستكون سهلة و بسيطة

عموما بعض المبرمجين يستخدمون  BackgroundWorker بهدف تنفيذ الفكرة الخاصة بك وهي نفس الفكرة التي قد تراها في برامج downLoad

انا لم اعمل مع WebBrwoser لكن أفترض اأنه به شئ اسمه PageLoaded و بها عليك ان تقوم بإيقاف العداد الخاص ب StopWatch
طيب ممكن تعمل الكود بعد ازنك وشكرااااا

لا انا عايزو يشتغل مع الويب
السلام عليكم اخي الكريم
انا رديت عليك في موضوع سابق بس واضح ان وجهة نظري لم تكن واضحة بما يكفي
قلت ان الموضوع ليس بالبساطة اللتي تتصورها لعدة اسباب 
لحساب سرعة تحميل مجموعة من البيانات يجب ان يكون لك القدرة على معرفة مقدار البيانات الواردة في فترة معينة 
للاسف الاداة web browser لا تتيح ذلك بحسب علمي
في المثال اللذي ارفقته لك في الموضوع السابق 

https://code.msdn.microsoft.com/windowsd...0a#content

في مثاله ذلك يستفيد من الكلاس PerformanceCounter واللذي يقوم بمراقبة قيم معينة في البرامج اللتي تعمل وكذلك قيم خاصة بالحاسب نقسه ، مثل القيم لتي تقوم ال Task manager بمراقبتها ( cpu , memory usage والى اخره ) 

وبمقدور ايضا هذا الكلاس ان يراقب كم البيانات الداخلة والخارجة من برنامج معين يعمل على ".NET CLR Networking 4.0.0.0"

ولكن للاسف الاداده web browser لم يتم تطويرها على ال ( .net 4 ) فلا يستطيع ال PerformanceCounter ان يراقبها ( اعتقد ذلك هو السبب ) 
ولكنه يستطيع ان يراقب كمية البيانات الداخلة والخارجة من البرنامج فيما عدا ذلك ، كأن تقوم بتحميل ملف مثلا دون الحاجة ل webbrowser 
في هذه الحالة سيكون بالامكان مراقبتها وتحديد سرعة البيانات ( او سرعة الداونلود )

في الحقيقة لست بحاجة ان تتعمق اكثر من ذلك في ال PerformanceCounter ففي المثال اعلاه قام باعداد كلاس لتسهيل التعامل معها واسماه NetworkTraffic
في مثاله يقوم بعرض صفحة في اداه Webbrowser و كذلك يقوم بتحميل ملف كمثال ، وتلاحظ بان السرعة تكون حقيقة فقط في حالة تحميل الملف
فانت الان امامك حل من 2 :
ان تجد طريقة لعرض ما تريد بدون اللجوء للاداه web browser كأن تستخدم ادوات عرض محتوى انترنت بديلة تم تطويرها باستخدام ( .net 4 ) 
او ان تستخدم web browser وتعرض السرعة المسحوبة من الجهاز كله ( وليس من البرنامج فقط )  وهذا امر بسيط وهناك طرق كثيره لمراقبه ذلك
عموما سأحاول ان اجد لك حلا لذلك ،
 وارفقت لك مثال يقوم بتحميل ملف برابط معين وكذلك يقوم بالدخول على صفحة ويب معينة بطريقتين ، قياس استهلاك الانترنت ككل ، واستهلاك البرنامج فقط
الكود بسيط ، ولكن اذا اردت شرح للكود اخبرني 
[attachment=13972]
لو الأمر مرتبط فعليا بموضوع NetworkInformation فالأمور تختلف قليلا لكن ما زال من الممكن الحصول علي سرعة الانترنت او أي معلومات مشابهة عن طريق استخدام الكلاس Progress Of T و ذلك بأن تمرر لها الكلاس NetworkInformation
الكود التالي سيوضح لك كيف تعمل في الخلفية للحصول علي سرعة النت
للأسف انا معلوماتي ضعيفة جدا في التعامل مع كلاسات النت لذلك وبعد إلقاء نظرة سريعة علي بعض كلاسات  النت
يمكنك ان تستخدم الكود التالي ليعطيك فكرة بسيطة عن كيفية الاجابة علي سؤالك

لتنفيذ الكود افتح مشروع بسيط و ضع علي الفورم باتون و Label
ثم اكتب الكود بالشكل التالي
وأفترض هنا انك متصل بالنت عند تنفيذ الكود

PHP كود :
   Private Async Function InvokeNetworkInterface(delay As Integerprogress As IProgress(Of NetworkInterface())) As Task
        Dim c 
As Integer 0
        While c 
<= Integer.MaxValue
            Await Task
.Delay(delay)
 
           progress.Report(NetworkInterface.GetAllNetworkInterfaces())
 
           c += delay
        End 
While
 
   End Function

 
   Private Async Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
        Dim delay 
As Integer 100
        Dim p 
As New Progress(Of NetworkInterface())(AddressOf ShowSpeed)
 
       ' OR
        '
Dim p As New Progress(Of NetworkInterface())(Sub(adapters As NetworkInterface())
 
       '                                                 Label1.Text = adapters(0).Speed
        ' 
                                            End Sub)

 
       Await InvokeNetworkInterface(delayp)
 
   End Sub

    Private Sub ShowSpeed
(adapters As NetworkInterface())
 
       Label1.Text adapters(0).Speed
    End Sub