Creazione di un thread in background in C# in modo normale -Come ottenere un handle di thread da passare a CancelSynchronousIO?
Thread t = new Thread(....);
t.IsBackground = true;
t.Start();
etc etc
Volendo chiamare CancelSynchronousIO
dal thread principale per annullare un blocco di chiamata IO il thread in background. Non sanno come ottenere un handle di thread in forma di IntPtr per passare alla funzione:
[DllImport("kernel32.dll", SetLastError=true)]
static extern bool CancelSynchronousIo(IntPtr threadHandle);
Sembra esserci vari modi di ottenere un ID di thread, ma non un manico? E i modi di ottenere un ID thread sembrano darti un ID solo all'interno dell'ambiente gestito, quindi non usare per le chiamate PInvoke? Immagino che mi manchi qualcosa.
Devo eseguire altre chiamate PInvoke per ottenere l'handle del thread o esiste un modo più semplice?
il codice potrebbe essere in esecuzione su un thread gestito, non su un thread nativo. –
vedere: http://msdn.microsoft.com/en-us/library/74169f59(v=vs.110).aspx –
@ DanielA.White: thread gestiti _are_ thread nativi; Le fibre non vengono quasi mai utilizzate. – SLaks