次の問題があります。
public class ListenThread : SocketInvoke
{
[DllImport("Ws2_32", CharSet = CharSet.Auto)]
public unsafe static extern UInt32 WSAWaitForMultipleEvents(UInt32 cEvents, IntPtr hEventObject,
UInt32 fWaitAll, UInt32 dwTimeout, Boolean fAlertable);
public void ListenConnections(NetSharedData data)
{
while (true)
{
unsafe
{
if (WSAWaitForMultipleEvents((UInt32)1, data.signal, (UInt32)0, (UInt32)100, false) != WSA_WAIT_TIMEOUT)
{
}
}
}
}
data.signal は UInt32 であり、どのように IntPtr にキャストできますか?、試してみます:
IntPtr signal = (IntPtr)data.signal;
しかし、メモリ例外を発生させるポインターとしての int 値ではなく、data.signal (UInt32) 型へのポインターが必要なため、機能しません。
私が必要とするもののC++の例:
int signal = 0;
int* psignal = &signal;