public class AsyncHelper { private static readonly TaskFactory _myTaskFactory = new TaskFactory(CancellationToken.None, TaskCreationOptions.None, TaskContinuationOptions.None, TaskScheduler.Default); public static void RunSync(Func<Task> func, bool await = false) { CultureInfo cultureUi = CultureInfo.CurrentUICulture; CultureInfo culture = CultureInfo.CurrentCulture; _myTaskFactory.StartNew(delegate { Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = cultureUi; return func(); }).Unwrap().ConfigureAwait(await).GetAwaiter().GetResult(); } public static TResult RunSync<TResult>(Func<Task<TResult>> func, bool await = false) { CultureInfo cultureUi = CultureInfo.CurrentUICulture; CultureInfo culture = CultureInfo.CurrentCulture; return _myTaskFactory.StartNew<Task<TResult>>(delegate { Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = cultureUi; return func(); }).Unwrap<TResult>().ConfigureAwait(await).GetAwaiter().GetResult(); } }
应用
if (AsyncHelper.RunSync(() => _Service.Send(req), false))//_Service.Send(req) return bool { }