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

نسخة كاملة : تحذير هام في التعامل مع For و Try
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
وقعت في مشكلة كبيرة كان برنامج يستهلك الكثير من الرام لدرجة انه احيانا لا يستجيب نهائي وبعد ان وصلت للسبب وجب التحذير

مشاهدة ممتعه 





او شاهده علي اليوت يوب
أنا مش فاهم المشكلة و ياريت تكتب لنا الكود في الحالتين
ويجب ان لا ننسي أن نضع في اعتبارنا ان الاستخدام الخاطئ للكود بالتأكيد يؤدي الي مشاكل
فيه شئ اسمه Exit Try ممكن تستخدمها إن لم يتم تنفيذ الكود
و Exception الموجود في جملة Try Catch له دور في العملية أيضا جملة Finally لها دور
انا مش فاهم لماذا تريد تنفيذ الكود الف مرة او مليون مرة علي string طوله لا يتعدي خمسة حروف ما تربط Loop مع طول String و خلاص
الموضوع سهل 
الفكرة اي كود تنفذه اي عدد لن يأخذ وقت طويل 
مثال لو عندك عدد  100 مسار لملف نصي وتريد البحث فيهم عن كلمة معينه لن يأخذ الكود ثواني معدوده صح
------------
الان توضيح النقطه الهامة
ربما يكون بعض الملفات غير موجود نفترض 20 ملف غير موجودين الان يجب عليه قبل قرءات محتوي الملف ان اتحقق من وجود الملف اولا تمام
في هذه الحالة لن يستغرق الكود وقت طويل ايضا تمام
---------------
الحالة التي تم التحذير منها هي الاتي
ساقوم بدل ان اتحقق من الملف قبل قراءة محتواه بوضع كود القراءه داخل try بدون ان اتحقق 
اذن سيحدث خطاء وتحقق try ان الملف غير موجود 
اذن اصبح عندي 20 try وهو عدد الملفات الغير الموجوده هذا العدد كفيل بتهنيج البرنامج
جرب بنفسك ورد عليه
اتمني تكون الفكرة وضحت
PHP كود :
   Private Function GetAllTextFiles(path As String) As String()
 
       Return GetFiles(path"*.txt")
 
   End Function

 
   Private Function GetAllHtmlFiles(path As String) As String()
 
       Return GetFiles(path"*.html")
 
   End Function

 
   Private Function GetAllFiles(path As String) As String()
 
       Return GetFiles(path"*.*")
 
   End Function

 
   Private Function GetFiles(path As StringfileExtension As String) As String()
 
       Dim parallel Task.Run(Function()
 
                                   Return Directory.GetFiles(pathfileExtensionSearchOption.AllDirectories)
 
                               End Function)
 
       Try
            Return parallel
.Result
        Catch ex 
As AggregateException
            ex
.Handle(Function(unauthorized)
 
                         ' Handle an UnauthorizedAccessException
                          If TypeOf unauthorized Is UnauthorizedAccessException Then
                              MessageBox.Show("You do not have permission to access all folders in this path. See your network administrator or try another path.", "Error", MessageBoxButtons.OK)
                          End If
                          Return TypeOf unauthorized Is UnauthorizedAccessException
                      End Function)
        End Try
        Return New String() {}
    End Function 
حاول  تستخدم الكود اعلاه و لتري ما سيحدث معك