04-07-17, 12:37 PM
معلومة سريعة
الدوت نت به كلاس اسمه MemoryMappedFile هذا الكلاس يسمح لمن يستخدمه انه يكتب اي بيانات الي ملف و يقرأ نفس البيانات من نفس الملف
و هذا الملف الذي يتم يناؤه بهذا الكلاس بشكل عام يتم إنشاؤه في ذاكرة الكمبيوتر
و هذا مثال بسيط عن كيفية كتابة تكست الي ملف و القراءة منه في نفس الوقت باستخدام هذا الكلاس
الكود التالي يوضح كيفية استخدام الدالة أعلاه
ما لفت انتباهي في هذا الكلاس أنك طالما تستطيع كتابة string فأنت تستطيع كتابة اي شئ اخر مثل مصفوفة String او Dictionary أو حتي DataTable
الكود التالي يوضح كيفية استخدام الكلاس في كتابة مصفوفة
الكود التالي يوضح كيفية الاستفادة من الدالة أعلاه
والكتابة الي تكست بوكس
عموما الاسلوب هذا ممكن استخدامه بأساليب كثيرة
مثلا ممكن تكتب الدوال في فضاء اسماء مختلف و تقرأ من فضاء أسماء أخر تماما
بدون أن تقوم بإظهار المصفوفة أو String كما في الأمثلة أعلاه
يمكنكم الإطلاع علي مزيد من التفاصيل عن الكلاس في الرابط التالي
الدوال اعلاه مختلفة قليلا عن الكود الموجود في الرابط الخاص بمايكروسوفت
طبعا مايكروسوفت مستحيل تشرح شئ بالتفصيل المناسب للناس
المرجع
الرابط
أتمني يكون الموضوع مفيدة للبعض منكم
الدوت نت به كلاس اسمه MemoryMappedFile هذا الكلاس يسمح لمن يستخدمه انه يكتب اي بيانات الي ملف و يقرأ نفس البيانات من نفس الملف
و هذا الملف الذي يتم يناؤه بهذا الكلاس بشكل عام يتم إنشاؤه في ذاكرة الكمبيوتر
و هذا مثال بسيط عن كيفية كتابة تكست الي ملف و القراءة منه في نفس الوقت باستخدام هذا الكلاس
PHP كود :
Private Function MapString(fileName As String, value As String, Optional capacity As Long = 1024) As String
Dim result As String = ""
SyncLock New Object
Using mmf = MemoryMappedFile.CreateNew(fileName, capacity)
Using viewStream As MemoryMappedViewStream = mmf.CreateViewStream()
Dim writer As BinaryWriter = New BinaryWriter(viewStream)
writer.Write(value)
End Using
Using viewStream As MemoryMappedViewStream = mmf.CreateViewStream()
Dim reader As BinaryReader = New BinaryReader(viewStream)
result += reader.ReadString()
End Using
End Using
End SyncLock
Return result
End Function
الكود التالي يوضح كيفية استخدام الدالة أعلاه
PHP كود :
' يمكنك استخدام اسم الملف باي اسم تريده و ليس شرطا ان بكون له امتداد
Dim s As String = MapString("any file name", "Visual basic For Arab")
ما لفت انتباهي في هذا الكلاس أنك طالما تستطيع كتابة string فأنت تستطيع كتابة اي شئ اخر مثل مصفوفة String او Dictionary أو حتي DataTable
الكود التالي يوضح كيفية استخدام الكلاس في كتابة مصفوفة
PHP كود :
Private Function MapList(fileName As String, value As List(Of String), Optional capacity As Long = 1024) As List(Of String)
Dim result As List(Of String) = Nothing
SyncLock New Object
Using mmf = MemoryMappedFile.CreateNew(fileName, capacity)
Using viewStream As MemoryMappedViewStream = mmf.CreateViewStream()
Dim writer As BinaryWriter = New BinaryWriter(viewStream)
writer.Write(value.Count)
For Each current As String In value
writer.Write(current)
Next
End Using
Using viewStream As MemoryMappedViewStream = mmf.CreateViewStream()
Dim reader As BinaryReader = New BinaryReader(viewStream)
result = New List(Of String)()
Dim count As Integer = reader.ReadInt32()
For i As Integer = 0 To count - 1
Dim s As String = reader.ReadString()
result.Add(s)
Next
End Using
End Using
End SyncLock
Return result
End Function
الكود التالي يوضح كيفية الاستفادة من الدالة أعلاه
والكتابة الي تكست بوكس
PHP كود :
Dim strings As String() = MapList("anyfileNam", New List(Of String) From {"Mohammed", "Abu Bakr", "Omar", "Othman", "Ali"}).ToArray
For Each s As String In strings
Me.TextBox1.AppendText(s + Environment.NewLine)
Next
عموما الاسلوب هذا ممكن استخدامه بأساليب كثيرة
مثلا ممكن تكتب الدوال في فضاء اسماء مختلف و تقرأ من فضاء أسماء أخر تماما
بدون أن تقوم بإظهار المصفوفة أو String كما في الأمثلة أعلاه
يمكنكم الإطلاع علي مزيد من التفاصيل عن الكلاس في الرابط التالي
الدوال اعلاه مختلفة قليلا عن الكود الموجود في الرابط الخاص بمايكروسوفت
طبعا مايكروسوفت مستحيل تشرح شئ بالتفصيل المناسب للناس
المرجع
الرابط
أتمني يكون الموضوع مفيدة للبعض منكم