public static void IsAvailableAsync(object state, AvailableComplete complete) { new Thread(new ThreadStart(() => { try { UpdateInfo updateInfo; bool isAvailable = IsAvailable(out updateInfo); if (complete != null) { complete(isAvailable, updateInfo, state, null); } } catch (Exception e) { if (complete != null) { complete(false, null, state, e); } } })).Start(); }