using System; using System.Threading.Tasks; using System.Threading; struct Struct { object m_member; public Struct (object member) { m_member = member; } public async Task AsyncMethod () { bool b = (string)m_member == "1"; await Task.Factory.StartNew (() => -3); b &= (string)m_member == "1"; return b; } } class C { public static int Main () { Struct s = new Struct ("1"); var t = s.AsyncMethod (); if (!Task.WaitAll (new[] { t }, 2000)) return 1; if (!t.Result) return 2; return 0; } }