Я пытаюсь выполнить рефакторинг загрузки отдельных свойств с помощью асинхронного метода.
Функция загрузчика такова:
public static async Task<Preferences> GetPreferences( string key ) ...
В настоящее время используется так
GetPreferences( "SettingsUploadStale" ).ContinueWith( task =>
App.MayUploadStale = Convert.ToBoolean( task.Result?.Value )
);
У меня есть куча этих вызовов, и я хочу скрыть и повторно использовать ContinueWith, Convert и т. Д. Я придумал эту функцию
public static void LoadPreferenceAsync( string key, ref bool store ) {
GetPreferences( key ).ContinueWith( task =>
store = Convert.ToBoolean( task.Result?.Value )
);
}
LoadPreferenceAsync( "SettingsUploadStale", ref App.MayUploadStale);
, который не компилируется с "Невозможно использовать ref, out или в параметре 'store' внутри анонимного метода, лямбда-выражения, запроса или локальной функции" .
Так, каков рекомендуемый способ сделать это? Я не хочу await
задач, чтобы это могло происходить в фоновом режиме, и я могу загрузить их все параллельно. Не хочу использовать небезопасный код или указатели, потому что это приложение Xamarin
, а Xamarin
уже слишком нестабильно без этого.