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

نسخة كاملة : لايمكن للعملية الوصول للملف لأنه قيد الإستخدام بعملية أخرى
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
[attachment=28053][attachment=28052]السلام عليكم ورحمة الله وبركاته
عندي مشكلة حاولت أبحث لها عن حل مدة ثلاثة أيام ولم أستطع حلها وهي متعلقة ببرنامج يقوم بسحب الصور من السكانر ثم يقوم بتحويلها إلى pdf  ثم يتم حفظها في قاعدة البيانات كل هذه العمليات تتم بكل سهولة ولكن المشكلة أنني إذا انتهيت من حفظ ملف وأردت أن أقوم بنفس العملية لصورة أخرى تظهر لي رسالة ( لايمكن للعملية الوصول للملف لأنه قيد الإستخدام بعملية أخرى ) ولايمكن إجراء العملية إلا بعد أن أقوم بإغلاق البرنامج وتشغيله مرة أخرى وهذا طبعاً غير عملي 

وللأمانة البرنامج مرسل لي من الأخ asmarsou  وأوجه له الشكر من جديد وقد قمت ببعض التعديلات ليتوافق مع ما أريد ومازال البرنامج قيد التجربة 

ورابط التحميل يوجد فوق الصورة 

آسف على الإطالة 

لكم جزيل الشكر 
دمتم بود
وعليكم  السلام ورحمة الله وبركاته

جرب اغلاق الكائن بعد كل عملية واعادة تشغيله

واذا ما مشي معك أرفق المشروع لنقف على المشكلة مع التجريب العملي (نجرب على سكانر المكتب). عندما أذهب للمكتب.
(06-08-22, 05:29 AM)Taha Okla كتب : [ -> ]وعليكم  السلام ورحمة الله وبركاته

جرب اغلاق الكائن بعد كل عملية واعادة تشغيله

واذا ما مشي معك أرفق المشروع لنقف على المشكلة مع التجريب العملي (نجرب على سكانر المكتب). عندما أذهب للمكتب.

لم أعرف كيف أقوم بإغلاق الكائن للأسف والمشروع مرفق أعلى الصورة في أول مشاركة

لك جزيل الشكر 
دمت بود
جرب أن تعدل على التعريفات
تضع في القسم العام التعريف التالي : 
كود :
Dim fs As FileStream

وبدلاً من الكود التالي : 
كود :
Dim fs As New FileStream("C:\aa\Save.pdf", FileMode.Open, FileAccess.Read)

أكتب الكود : 
كود :
fs = New FileStream("C:\aa\Save.pdf", FileMode.Open, FileAccess.Read)


وعند الكود التالي أكمل بـ الكود الذي في السطر الذي يليه :

كود :
           pdf.Save(info.OutputFile)
           fs.Close()
[attachment=28056]السلام عليكم ورحمة الله وبركاته
أشكرك أخي على ردك وتفاعلك وآسف لتأخري في الرد لظرف عائلي 
لقد نفذت الحل الذي إقترحته ولكن ظهرت لي المشكلة التي في الصورة الموجودة في المرفقات 
لك جزيل الشكر 
دمت بود
وعليكم السلام ورحمة الله وبركاته

المشكلة موجودة في الكود :
كود :
       Dim fso As Object
       fso = CreateObject("Scripting.FileSystemObject")
       fso.DeleteFolder("C:/aa", True)

حيث أنه بسبب أداة (TwainHandler.vb) تبقي ملفات الصور مرتبطة بها وخاصة آخر صورة تم سحبها بها
--
الحل أن تصنع مجلدات فرعية ضمن المجلد  (C:/aa)
مع كل عملية سكان جديدة تصنع مجلد جديد وتجري عليه كافة العمليات. 

الجديد هو : 
قم بالتعريف عن المتغيرات التالية في القسم العام :

كود :
Dim Path As String = "C:\"      '======>>>>>>== جديد
   Dim intPath1 As Integer = 0     '======>>>>>>== جديد


كود السكانر لديك يصبح بالشكل التالي :

كود :
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
       On Error GoTo 123
       Directory.Delete("C:\aa\", True)
123:

       My.Computer.FileSystem.CreateDirectory("C:\aa")

       intPath1 = intPath1 + 1

       Dim filename As String
       My.Computer.FileSystem.CreateDirectory("C:\aa\" & intPath1)

       filename = TwainHandler.ScanIt("C:\aa\" & intPath1)

       PictureBox1.Image = Image.FromFile("C:\aa\" & intPath1 & "\" + filename)



       txtSource.Text = "C:\aa\" & intPath1
       txtDestination.Text = "C:\aa\" & intPath1 & "\save.pdf"



       If Not bwMakePdf.IsBusy Then
           ' ''Create and fill up WorkerParameters object.
           Dim info As New WorkerParameters
           With info
               .InputDirectory = txtSource.Text
               .OutputFile = txtDestination.Text
           End With
           ' ''Start thread using "info" object as Argument
           bwMakePdf.RunWorkerAsync(info)

           cmdProcess.Enabled = False
           cmdCancel.Enabled = True
           prgProcess.Value = 0
           lblPercent.Text = "0%"
       Else
           MsgBox("Thread is busy.", vbExclamation, "Busy.")
       End If


       TextBox1.Text = "صورة عذر طبي لموظف"

   End Sub
الف شكر لك استاذ سوف أجرب الكود وأعطيك النتائج

لك جزيل الشكر
دمت بود
 ألف ألف ألف شكر  والله يعجز لساني عن شكرك 
تم عمل الكود كما ينبغي 
وحتى لو لم يعمل الكود فمجرد إهتمامك يعتبر حافزاُ لي 
أكرمك الله في الدنيا والآخرة 

لك جزيل الشكر 
دمت بود