Danke für eure Tipps!
Ich habe es jetzt so gelöst, dass ich mir die process id und die thread id im mmf speichere. Dauert eine Übertragung dann länger, wird überprüft ob alle beteiligten Prozesse (bei verschieden Prozessen), bzw. alle beteiligten Threads (bei einem Prozess und mehrere AppDomains), noch leben.
Die managed Threads hohle ich mir, wie von Abt schon erwähnt, aus einem Debug dump, welcher mit Microsoft.Diagnostics.Runtime (
https://github.com/Microsoft/clrmd) wie folgt erstellt wird:
using (DataTarget target = DataTarget.AttachToProcess(Process.GetCurrentProcess().Id, 1000, AttachFlag.Passive))
{
ClrRuntime runtime = target.ClrVersions.First().CreateRuntime();
foreach (ClrThread thread in runtime.Threads)
{
//..
}
}
Da ein Kommunikationsabbruch der Fehlerfall ist, hoffe ich das die Lösung mit dem Debug-Dump in der Praxis nicht zu weiteren Fehlern führt.
Falls interesse an der kleinen IPC-Klasse besteht, kann ich diese gerne hier mit kleinem Beispiel mit einfügen.