Я обновил мои решения .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;
}
}