2008-08-20 43 views
2

Kodu gönderemiyorum (özel sorunlar) ancak C# cinsinden aşağıdaki hata türlerine neden olan herhangi bir şey bilen var mı? Bu çağrı, diğer istemci tarafından sona erdiğinde yazdığım bir VOIP istemcisi tarafından (counterpath api kullanarak) atılıyor. hatadır:C# Bozuk Bellek Hatası

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.DispatchMessageW(MSG& msg) 
     at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) 
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
     at System.Windows.Forms.Application.Run(Form mainForm) 
     at CollabAnalysisSF.Edge.GUI.Forms.Program.Main() in d:\data\beyerss\Desktop\client\GUI\ARGui\Program.cs:line 18 
     at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException:

GÜNCELLEME: biz hakkında bilmiyordum bir etkinlik dışı gönderiyordu kullanıyorlardı kütüphanelerden biri çıkıyor ve sorun oralarda bir yerde oldu. Şimdi sabit.

cevap

3

listesi: o yerleştirilmiş sonra

  • bir amacı kullanılıyor. Bu, bir sonlandırıcıda yönetilen nesneyi atıyorsanız çok şey olabilir (bunu yapmamalısınız).
  • Kullandığınız nesnenin birinin inkişafsız bir uygulaması, işlenecek ve işlem belleği yığınını bozdu. DirectX, GDI ve diğerleri ile çok şey olur.
  • Yönetilen yönetilmeyen sınırdaki mashaling hatalı. Yönetilmeyen bir işaretçiyi, kodun yönetilmeyen bir bölümünde kullanmadan önce sabitlediğinizden emin olun.
  • Güvensiz bir blok kullanıyor ve onunla komik şeyler yapıyorsunuz.

bunu Windows Forms ile bir sorun olabilir harf olarak. Fakat sorun şu ki, bunun gerçekleştiği değil, doğru bir şekilde rapor edilmediği; Muhtemelen yanlış bir şey yapmış olabilirsiniz.

HWND'yi kullanarak hatanın hangi denetime neden olduğunu belirleyebiliyor musunuz? Her zaman aynı mı? Bu kontrol, uygulamanın çökmesinden hemen önce komik bir şey mi yapıyor? Kontrolün inkişafsız kısmı özel bir pencere mi yoksa standart bir kontrol mü?

1

Yönetilmeyen kodu çağırıyorsanız, bu tür bir prolem oluşabilir. Bir dll. Marshalling korkunç derecede yanlış gittiğinde ortaya çıkabilir.

Yönetilmeyen kodu çağırıyor musunuz, bize söyleyebilir misiniz? Varsa, varsayılan Marshalling veya daha spesifik şeyler kullanıyor musunuz? Yığın izinin görünüşünden güvenli olmayan kod kullanıyorsunuzdur. İşaretçiler ve benzerleri? Bu senin problemin olabilir. Bazı olasılıklar

0

İşte daha ayrıntılı bir stacktrace. o TargetSite {IntPtr DispatchMessageW(MSG ByRef)}
olarak listelenir ve modül altında o System.Windows.Forms.dll

sahiptir

System.Windows.Form.dll ile ilgili bir şey var gibi bana bakıyor