إخواني السلام عليكم ورحمة الله وبركاتة
بعدكثير من المحاولات في التعامل مع الصور وإضافتها إلى قاعدة البيانات أنا حالياً أعمل على برنامج يقوم بإضافة مجموعة من الصور إلى قاعدة البيانات دفعة واحدة ( بنفس الزر (الــ Button)) وذلك كما سترون في البرنامج الموضح
حيث يقوع البرنامج بعرض الصورة أولاً في أداة PicturBox ومن ثم يضيفها في قاعدة البياانت ويوضح ذلك الـــ ProgressBar الموجود في البرنامج
ولكن بعد إضافة عدد من الصور تظهر رسال Out Of Memory في سطر عرض الصورة في الأداة PictureBox فما هو السبب؟؟؟
حاولت أن أضع المتغير ms.Close وكذلك ms.Disponse ولكن لافاتدة من ذلك
إليكم الكور الموضوع في زر Button
Dim Fs As New Scripting.FileSystemObject
Dim Fd As New Scripting.FileSystemObject
'FolderOffers الحصول على محتويات المجلد
Dim Fls As IEnumerator = Fs.GetFolder(Application.StartupPath & "\FolderOffers\").Files.GetEnumerator
'TempFolderPictures إنشاء مجلد مؤقت بإسم
Dim Dir As Scripting.Folder = Fs.CreateFolder(Application.StartupPath & "\TempFolderPictures")
Static c As Int16 = 0
'لمعرفة عدد الملفات
Do While Fls.MoveNext
c += 1
Loop
Fls.Reset()
Me.ProgressBar1.Visible = True
Me.ProgressBar1.Value = 0
If con.State = ConnectionState.Open Then con.Close()
con.Open()
'ليتم إعادة تحميل الصور إلى الجدول Offers حذف محتويات الجدول
Dim Cd As New OleDb.OleDbCommand("Delete From Offers", con)
Cd.ExecuteNonQuery()
'البدأ في تحميل الصور وذلك على مرحلتين
'مع تغيير أسمائها TempFolderPictures والذي يحوي عدد من الصور إلى المجلد المؤقت FolderOffers المرحلة الأولى نسخ محتويات المجلد
' المرحلة الثانية البدأ بتحميل الصور إلى الجدول من المجلد المؤقت
Do While Fls.MoveNext
'المرحلة الأولى
Static i As Int16 = 0
i += 1
Dim F As Scripting.File = CType(Fls.Current, Scripting.File)
Fs.CopyFile(F.Path, Application.StartupPath & "\SpactelPictures\" & i & ".jpg")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'PictureBox عرض الصور في أداة
'إخواني هنا تحدث المشكلة حيث تظهر رسالة Out Of memory
Dim img As Image = Image.FromFile(Application.StartupPath & "\SpactelPictures\" & i & ".jpg")
PictureBox1.Image = img
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'المرحلة الثانية
If con.State = ConnectionState.Open Then con.Close()
con.Open()
Dim Cm As New OleDb.OleDbCommand("insert into Offers (Picture_No) values(" & i & ")", con)
Cm.ExecuteNonQuery()
Dim strSQL As String = "Update Offers Set Picture=" & "@pic" & " where Picture_No=" & i
Dim cmdSQL As New OleDb.OleDbCommand(strSQL, con)
Dim ms As New IO.MemoryStream()
Dim arrimg() As Byte
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
arrimg = ms.GetBuffer
With cmdSQL
.Parameters.Add(New OleDb.OleDbParameter("@pic", SqlDbType.Image)).Value = arrimg
End With
Try
If con.State = ConnectionState.Open Then con.Close()
con.Open()
cmdSQL.ExecuteNonQuery()
con.Close()
Catch ex As SqlClient.SqlException
MsgBox(ex.Message)
Finally
con.Close()
End Try
If Me.ProgressBar2.Value + (100 / c) > 100 Then
Me.ProgressBar2.Value += 100 - Me.ProgressBar2.Value
Else
Me.ProgressBar2.Value += (100 / c)
If Me.ProgressBar2.Value > 100 Then
Me.ProgressBar2.Value = 100
End If
End If
System.Threading.Thread.Sleep(5)
Loop
Me.ProgressBar2.Visible = False
'MsgBox("ssssssssssssssssssssssss")
'Dim Fdd As New Scripting.FileSystemObject
'Fdd.DeleteFolder(Application.StartupPath & "\SpactelPictures", True)
MessageBox.Show("تمت العملية بنجاح", "SpacetelYemen", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading)
Dispose(True)
Application.Restart()
' Catch ex As Exception
'MsgBox(ex.Message)
' End Tryياريت ياإخواني تساعدوني فأنا في أمس الحاجة لمعالجة هذه المشكلة حيث أن عملي متوقف عند هذه المشكلة
مع خالص شكري mqmmss