"The process cannot access"

dan3330

New member
"The process cannot access"

אני עורך כעת ניסיונות בגישה ושינויי פרטים במסד נתונים מסוג אקסס מ-webform. לכן אני מידי פעם מבצע שגיאות שעוצרות את התהליך. הבעיה היא שאני פותח connection ואז נוצרת שגיאה עוד לפני שה-connection מספיק לנסגר, ועקב כך מופיעה לי בניסיונות הבאים הודעת השגיאה:
System.Data.OleDb.OleDbException: Could not use ''; file already in use.​
גם כשאני מנסה למחוק את קובץ ה-mdb על ידי תוכנת FTP, התוכנה לא מוכנה למחוק את הקובץ הטענה ש:
The process cannot access the file because it is being used by another process.​
רק לאחר המתנה ארוכה (מאד) הקובץ "משתחרר" לשינויים ואני יכול להמשיך לשלוף ממנו נתונים ולעדכן אותו. כיצד אני יכול לסגור connection או לקטוע את התהליך שאינו מאפשר לי להמשיך לעבוד על קובץ ה-mdb. תודה! דן.
 

סומבודי

New member
1. ייתכן

שעברת את מספר החיבורים המותר? אולי זה לא עניין של "זמן", אלא רק כאשר אחד החיבורים משתחרר (=נסגר). 2. ברור שאם יש התקשרות פתוחה, הקובץ מסומן כפתוח. אתה משתמש ב-using?
 

סומבודי

New member
הסבר

עליך לסגור כל אובייקט OleDbConnection מיידית לאחר השימוש באמצעות מתודת Close או Dispose. ב-C# ניתן לשים את משפט הפתיחה בתוך using, והאובייקט ייסגר אוטומטית לאחר הסוגריים המסולסלות. (ביתר פירוט, מתודת ה-Dispose תיקרא). דבר זה נכון לכל אבייקט שמממש את מתודת Dispose.
OleDbConnection cn = new ...; using (cn.Open()) { // do your code } // here the connection will be closed.​
בשפות אחרות יש לקרוא ל-Close מפורשות.
 

dan3330

New member
אני משתמש ב-VB

ובינתיים מצאתי פתרון נוח: שימוש ב-try catch. תודה רבה! דן.
 
למעלה