PDA

View Full Version : سوال: خطاي callback در هنگام فراخواني dll در c#



danyal10
یک شنبه 23 مرداد 1390, 10:18 صبح
با سلام خدمت كليه دوستان.
دربرنامه نويسي c#نزديك سه هفته س به يه مشكل خوردم كه كلافم كرده ديگه:عصبانی:.ممنون ميشم دوستان اگه ميتونند كمكم كنند:تشویق:واقعاهرچه دنبال گشتم پيدا نكردم.
من يه dll بدون سورس دارم كه تابع زيرتوش تعريف شده
Readfunc(int start, int count,intptr ptstruct, ref int readCount);
وstruct بصورت زيرتعريف شده
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct structfunc
{
public byte ID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] date;
public uint user;
}
سورس فراخواني تابع dll رو بصورت زيرنوشتم
structfunc p = new structfunc();
intptr ptr1 = Marshal.AllocHGlobal(Marshal.SizeOf(p));
Marshal.StructureToPtr(p, ptr1, false);
int result = Readfunc(start, count, ptr1 , ref readCount);
Marshal.FreeHGlobal(ptr1);
حالا موقعي كه تابع هنگام اجرا فراخواني ميشه بار اول اجرا ولي دفعات بعدخطاي زيرروميده

A callback was made on a garbage collected delegate of type 'ns1!ns1.RawDataCallback::Invoke'. This may cause application crashes, corruption and data loss. When passing delegates to unmanaged code, they must be kept alive by the managed application until it is guaranteed that they will never be called.
زيادراجع delegate ها گشتم اما نتونستم متاسفانه...! .دوستان لطفاكمك كنندكه خيلي :گریه::عصبانی::گریه: ....پيشاپيش ممنونم از همه دوستان