Marshal.DestroyStructure не работает после обновления .net Framework - PullRequest
0 голосов
/ 22 февраля 2019

Я обновил мои решения .net Framework с 3.5 до 4.6.1 и получил ошибку APPCRASH во время работы моего инструмента.Поэтому я попытался отладить код, и кажется, что когда элемент управления достигает кода, приведенного ниже, отладка просто завершается без каких-либо ошибок.Пробная обработка исключений для обнаружения ошибки, но без использования.

Marshal.DestroyStructure(p, typeof(DS_SELECTION))

Пример

См. Этот пример в .Net Fiddle

using System;
using System.Runtime.InteropServices;                   
public class Program
{
    public static void Main()
{
    IntPtr p = IntPtr.Zero;
    IntPtr dsSL = IntPtr.Zero +1;
    p = (IntPtr)(((int)dsSL) + Marshal.SizeOf(typeof(DS_SELECTION_LIST)));
    if(IntPtr.Zero.Equals(p) == false)
    {
        //Console.WriteLine("Hello");
        Marshal.DestroyStructure(p, typeof(DS_SELECTION));
    }       
}
internal struct DS_SELECTION
{
    [MarshalAs(UnmanagedType.LPWStr)]
    public string pwzName;      
}

internal struct DS_SELECTION_LIST
{       
    public uint cFetchedAttributes;
}
}
...