private static void Do(Union <int, double, string> u, out ManualResetEventSlim ie, out ManualResetEventSlim de, out ManualResetEventSlim se) { var iel = new ManualResetEventSlim(); var del = new ManualResetEventSlim(); var sel = new ManualResetEventSlim(); ie = iel; de = del; se = sel; u.Do( i => iel.Set(), d => del.Set(), s => sel.Set()); }