العودة   منتدى رياض الجنة - Riad Al-Ganah > الرياض التقنية > روضة الكورسات والدورات التقنية والعلمية > روضة دورات تقنية الـ .NET بلغاتها المختلفة > دورة .NET 2008 من منتدى فيجوال بيسك للعرب

دورة .NET 2008 من منتدى فيجوال بيسك للعرب مقدم الدورة : أحمد جمال ، نوع الدورة : كتابية مصحوبة بصور ، حالة الدورة : انتهت ، عدد الدروس : 80 درس . مستوى الدورة : من البداية للاحتراف .

إضافة رد

 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 03-01-2010, 01:52 PM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي الدرس الحادي والخمسون : System.IO - الجزء الثالث والأخير - دورة .net 2008

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

نواصل اليوم مع الجزء الاخير من سلسلة دروس التعامل مع الملفات من خلال .net 2008 ، ونبدأ بموضوع مراقبة الملفات ...

FileSystemWatcher :

تعتبر هذه الفئة مفيدة جداً في حالة رغبتنا في مراقبة سلوك ملف معين ومعرفة اي تغيير يطرأ عليها من التغييرات الموجودة في ال System.IO.NotifyFilters enum والذي يراقب اي من التغييرات التالية :
كود PHP:
public enum NotifyFilters
{
AttributesCreationTime,
DirectoryNameFileName,
LastAccessLastWrite,
SecuritySize,

طبعاً بما اننا نتحدث عن events وتغييرات ، سنحتاج فوراً لتعريف دوال يتم تنفيذها مرتبطة بالاحداث ، اي دالة تستخدم لقراءة احداث مثل التعديل والتغيير وخلافه لا بد ان تكون على شكل delegate التالي :
كود PHP:
void MyNotificationHandler(object sourceFileSystemEventArgs e
حدث تغيير الاسم لا بد أن يتبع لل delegate التالي :
كود PHP:
void MyNotificationHandler(object sourceRenamedEventArgs e
الآن سنقوم بتعريف برنامج عادي ، يقوم بمراقبة حالة الملفات ، طبعاً ولإننا نرغب في ان نرى نتائج البرنامج فلا بد ان نجعل البرنامج يعمل حتى يضغط المستخدم حرف q مثلاً ، لو كنا في windows Forms كان بامكاننا المراقبة مباشرة طبعاً ، في مثالنا هذا سنراقب كافة الملفات النصية في القرص الصلب c:\ لحدثي الاضافة والحذف :
C#:
كود PHP:
FileSystemWatcher watcher = new FileSystemWatcher();
            
// monitor files at:
            
watcher.Path = @"c:\";
            // monitor files when
            watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName| NotifyFilters.DirectoryName;
            
            // watch files of type
            watcher.Filter = "
*.txt";
            // watch events:
            watcher.Created += new FileSystemEventHandler(OnChanged);
            watcher.Deleted += new FileSystemEventHandler(OnChanged);
            
            
            watcher.EnableRaisingEventys = true;
            Console.WriteLine("
Press 'q' to quit app.");
            while (Console.Read() != 'q') ; 
vb.net:
كود PHP:
Dim watcher As New FileSystemWatcher() 
' monitor files at: 
watcher.Path = "c:\" 
monitor files when 
watcher
.NotifyFilter NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName 
' watch files of type 
watcher.Filter = "*.txt" 
watch events
AddHandler watcher.CreatedAddressOf OnChanged 
AddHandler watcher
.DeletedAddressOf OnChanged 

watcher
.EnableRaisingEvents True 
Console
.WriteLine("Press 'q' to quit app."
While 
Console.Read() <> "q"
    
End 
While 
كما لاحظت ، عندما يحدث أي حدث فإننا نقوم باستدعاء الدالة OnChanged ، يمكن تخصيص دالة لكل حدث أو كما تحب لكن هذا فقط مثال ، يمكننا كتابة الدالة OnChanged بالشكل التالي مثلاً - عرض الملف والتغيير ووقت التغيير - :
C#:
كود PHP:
static void OnChanged(object sourceFileSystemEventArgs e)
        {
            
Console.WriteLine("File Changed, File Path: {0} , Change: {1}, DateTime: {2}"e.FullPathe.ChangeType,DateTime.Now.ToString());
        } 
vb.net:
كود PHP:
Private Shared Sub OnChanged(ByVal source As ObjectByVal e As FileSystemEventArgs
    
Console.WriteLine("File Changed, File Path: {0} , Change: {1}, DateTime: {2}"e.FullPathe.ChangeTypeDateTime.Now.ToString()) 
End Sub 
والآن جرب البرنامج ...
الصورة التالية نتاج متوقع لحذف ملف من السي واعادته مرة أخرى ( من السي مباشرة ) :



كنت اود اضافة الجزء الثاني من الدرس عن Isolated Storage ولكني وجدت نفسي غير مهيأ لأن اكتب درساً فيها قبل ان اكون قادراً على استيعابها بصورة كاملة ، لذا التمس منكم العذر ، وأتمنى لو اتحفنا أحد خبراءنا بدرس حول هذا الموضوع .

درسنا القادم إن شاء الله سيكون عن ال Object Serialization والذي آمل انني استطيع البدء فيه قريباً إن شاء الله .

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
إضافة رد


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الدرس الثالث والخمسون : قراءة أحداث الكيبورد والماوس - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 1 12-19-2010 06:45 PM
الدرس الثالث : عالم ADO.net وما يتعلق به - الجزء الثالث - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-11-2010 03:14 PM
الدرس الخمسون : System.IO - الجزء الثاني - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-01-2010 01:37 PM
الدرس الحادي والعشرون : الوراثة Inheritance دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-20-2010 03:24 PM
الدرس الحادي عشر : الأنواع Value والأنواع Reference دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-18-2010 08:04 PM

استضافة الحياة

الساعة الآن 08:09 PM.


Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By Almuhajir
النسخة الفضية
Ads Management Version 3.0.1 by Saeed Al-Atwi

SlamDesignzslamDesignzEdited by Riad Al-Ganah Team - جميع الحقوق محفوظة لشبكة رياض الجنة

Privacy Policy Valid XHTML 1.0 Transitional By SlamDesignz Valid CSS Transitional By SlamDesignz