brak możliwości użycia "await" na zwracanym tasku.

brak możliwości użycia "await" na zwracanym tasku.
M9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

Mam zdefiniowany obiekt:

Kopiuj
    public class Controller
    {
        public Func<string, string, Sink, bool, Task> Display;
    }

Użycie:

Kopiuj
    Controller controller;
    await controller.Display("", "", null, true);//nie mogę tego użyć w ten sposób
    Task displayTask = controller.Display({...}); //przechodzi

Jakieś pomysły?

Manuel.Artificer
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 177
2

Si senor

Metoda gdzie używasz await musi być oznaczona jako async

Takie coś:

Kopiuj
	private async void DoSomething()
        {            
            await controler.Display("","","",false);
        }
M9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0
Manuel.Artificer napisał(a):

Si senor

Metoda gdzie używasz await musi być oznaczona jako async

Takie coś:

Kopiuj
	private async void DoSomething()
        {            
            await controler.Display("","","",false);
        }

Wiem, funkcja przypisana do Controller.Display

Kopiuj
        public async Task Meh(string ID, Sink Sink = null, bool HideEmpty = false)
        {
                 CB.Dispatcher.Invoke((() =>
                 {
                      //do stuff
                }
        }

Wątpię aby miało to znaczenie, ale obiekt typu Controller jest wstrzykiwany do obiektu zaimportowanego przy użyciu MEF.

MrBean Bean
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 117
0

Możesz też pisać w ten sposób

Kopiuj
Func<string, Task> WebConnection = async (string webConncetionString) => { await ConncetionResponseAsync(webConncetionString) };

Jeśli o to ci chodzi...
Taska możesz wykonać bez async / await ale doprowadzi to do wyścigu wątków. Np. zanim uaktualnisz DB jej zawartość zostanie wyświetlona.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.