AccessViolationException:::..
سلام علیکم...........::::::::..........
در پروژه ای که دارم می نویسیم کاربر باید عکسی را برای اعضا انتخاب کند ولی مشکل از اینجا ناشی می شود که وقتی دیالوگ باز می شه و کاربر عکس را انتخاب می کند برای بار دوم یا سوم که می خواد عکس را انتخاب کند باخطای زیر روبرو می شود و باید برنامه راببندد و دوباره باز کند تا درست عمل کند.
دوستان لطفا کمک کنید
System.AccessViolationException was unhandled
Message="Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Source="System.Windows.Forms"
StackTrace:
at System.Windows.Forms.UnsafeNativeMethods.IntDestro yWindow(HandleRef hWnd)
at System.Windows.Forms.UnsafeNativeMethods.DestroyWi ndow(HandleRef hWnd)
at System.Windows.Forms.NativeWindow.DestroyHandle()
at System.Windows.Forms.Control.DestroyHandle()
at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
at System.Windows.Forms.Form.ShowDialog()
at WindowsFormsApplication1.frm_Books.button1_Click(O bject sender, EventArgs e) in I:\programing\AriaLibrary\AriaLibrary\frm_Book\frm _Books.cs:line 126
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventAr gs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallba ck(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchM essageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager. System.Windows.Forms.UnsafeNativeMethods.IMsoCompo nentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.RunDialog(Form form)
at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
at System.Windows.Forms.Form.ShowDialog()
at WindowsFormsApplication1.frm_Main.button2_Click(Ob ject sender, EventArgs e) in I:\programing\AriaLibrary\AriaLibrary\frm_Main.cs: line 52
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventAr gs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallba ck(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchM essageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager. System.Windows.Forms.UnsafeNativeMethods.IMsoCompo nentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at WindowsFormsApplication1.Program.Main() in I:\programing\AriaLibrary\AriaLibrary\Program.cs:l ine 19
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.Run UsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context( Object state)
at System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
نقل قول: AccessViolationException:::..
با سلام دوست عزیز لطفا در ارسال دقت کتید در حداقل امکان کد هاتون رو در داخل code قرار دهید لاقل بدونیم چی به چی هست و یه سئوال کاربر برای خودش عکس انتخاب میکنه یا برای کاربران؟
نقل قول: AccessViolationException:::..
Code؟
بدون کد چطوری میشه یه race condition رو تشخیص داد؟
نقل قول: AccessViolationException:::..
نقل قول:
نوشته شده توسط
flash118
با سلام دوست عزیز لطفا در ارسال دقت کتید در حداقل امکان کد هاتون رو در داخل code قرار دهید لاقل بدونیم چی به چی هست و یه سئوال کاربر برای خودش عکس انتخاب میکنه یا برای کاربران؟
:قهقهه::قهقهه::قهقهه:بابا مگه مجبوری چیزی رو که بلد نیستی جواب بدی .سوالم کاملا واضح هست پس بهونه نیار من می خوام بدونم این خطا برای چیه و چطووری ازش جلوگیری کنم البته فکر کنم به خاطره اینه که دسترسی به این فایل به خاطر اینکه داره محافظت می شه مقدور نمی باشد ولی در واقع اینجوری نیست و فایل ها قابل دسترسی می باشند .ولی نمی دونم چرا این خطا را می ده.
نقل قول: AccessViolationException:::..
لطف کنید و کد همون قسمتی که پنجره انتخاب عکس رو میارید رو بذارید.
اونطوری بهتر می شه کمک کرد.
نقل قول: AccessViolationException:::..
نقل قول:
نوشته شده توسط
09111111111
لطف کنید و کد همون قسمتی که پنجره انتخاب عکس رو میارید رو بذارید.
اونطوری بهتر می شه کمک کرد.
هر چند فکر نمیکنم به کد مربوط باشه ولی باشه اینم کدم
try
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)//زمانی که کاربر عکسی را انتخاب کرد
{
pathpic = openFileDialog1.FileName;
pictureBox1.Image = Image.FromFile(pathpic);//عکس نمایش داده شود
}
}
catch (AccessViolationException)
{
msg.AccessViolation();//دسترسی غیر مجاز
}
نقل قول: AccessViolationException:::..
هر موقع از Image.FromFile استفاده می کنی تا زمانی که Image را Dispose نکنی فایل مورد نظر Lock می شود پس احتمالا قبلا این فایل را توسط این دستور Lock کردی
نقل قول: AccessViolationException:::..
نقل قول:
نوشته شده توسط
gwbasic
هر موقع از Image.FromFile استفاده می کنی تا زمانی که Image را Dispose نکنی فایل مورد نظر Lock می شود پس احتمالا قبلا این فایل را توسط این دستور Lock کردی
سلام .
دوست عزیز ممنون می شم راهنمایی کنید وبفرمایید از چه کدی استفاده کنم
نقل قول: AccessViolationException:::..
پس این همه مهندس اینجا چه کار می کن یکی جواب نمیده .
من دو فرم دار م و زمانی که فرم دوم را باز میکنم و عکس را انتخاب میکنم و فرم را میبندم و دوباره فرم 2 را باز می کنم این بار که میخوام عکسی انتخاب کنم با این مشکل بر می خورم .
لطفا کمک کنید چن وقته پروژم به خاطر این خطا خوابیده و یشرفتی نداشتم.
آقایون مدیرا فقط بلدن تایپیک حذف کنند و قوانین را گوشزد کنن یکی سوالم را جواب بده
نقل قول: AccessViolationException:::..
نقل قول:
نوشته شده توسط
javad_r_85
پس این همه مهندس اینجا چه کار می کن یکی جواب نمیده .
من دو فرم دار م و زمانی که فرم دوم را باز میکنم و عکس را انتخاب میکنم و فرم را میبندم و دوباره فرم 2 را باز می کنم این بار که میخوام عکسی انتخاب کنم با این مشکل بر می خورم .
لطفا کمک کنید چن وقته پروژم به خاطر این خطا خوابیده و یشرفتی نداشتم.
آقایون مدیرا فقط بلدن تایپیک حذف کنند و قوانین را گوشزد کنن یکی سوالم را جواب بده
شما وقتی نمیتونی کد یک button رو کامل بزاری اینجا, چه انتظاری داری؟
نقل قول: AccessViolationException:::..
آق مهندس صفحه قبل را ببینی کدش را قرار دادم و بازم دوباره قرار می دم
if (openFileDialog1.ShowDialog() == DialogResult.OK)//زمانی که کاربر عکسی را انتخاب کرد
{
pathpic = openFileDialog1.FileName;
pictureBox1.Image = Image.FromFile(pathpic);//عکس نمایش داده شود
نقل قول: AccessViolationException:::..
سلام
کدتون رو به این صورت تغییر بدید ببینید درست میشه ؟
if (openFileDialog1.ShowDialog() == DialogResult.OK)//زمانی که کاربر عکسی را انتخاب کرد
{
pathpic = openFileDialog1.FileName;
Image img=Image.FromFle(path);
Picturebox1.Image=img;
img.Dispose();
}
نقل قول: AccessViolationException:::..
نقل قول:
نوشته شده توسط
javad_r_85
آق مهندس صفحه قبل را ببینی کدش را قرار دادم و بازم دوباره قرار می دم
if (openFileDialog1.ShowDialog() == DialogResult.OK)//زمانی که کاربر عکسی را انتخاب کرد
{
pathpic = openFileDialog1.FileName;
pictureBox1.Image = Image.FromFile(pathpic);//عکس نمایش داده شود
این کدی که گزاشتی مشکل داره.
مشکلش اینه که قبل از set کردن Image اون رو dispose نمیکنی.
if(pictureBox1.Image != null) pictureBox1.Image.Dispose();
مشکل اصلی اینه که چرا بقیه کد رو نمیزاری؟
نقل قول: AccessViolationException:::..
مشکلی از این بابت هم نباید باشه. کد صفحه قبل به درستی کار میکنه ( حداقل برای من ) . مطمئنا ایراد از ی جای دیگست( حداقل برای شما ) .