lima-city: Webhosting, Domains und Cloud
1 Pluspunkt 0 Minuspunkte

Wenn ich eine async Methode aus der Main Methode mit await aufrufen möchte

using System;
using System.Threading.Tasks;

public class Program
{
	public static void Main()
	{
		await MachEtwas();
	}
	
	private async void MachEtwas() {
		Task.Delay(2000);
	}
}

dann bekomme ich einen Fehler angezeigt

The 'await' operator can only be used within an async method.

Aber wie rufe ich das dann aus Main auf?

von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Du kannst deine Main Methode selbst zu einem async Task machen.

static async Task Main(string[] args) { ... }

Außerdem muss deine MachEtwas() Methode auch ein Task Objekt zurückgeben.

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        await MachEtwas(); 
        Console.WriteLine("Erledigt..");
    }

    static async Task MachEtwas()
    {
        await Task.Delay(2000);
    }
}
von (630 Punkte)  
0 Pluspunkte 0 Minuspunkte

Du kannst sie über ein Event aufrufen. Definiere in deiner Klasse einen EventHandler.

static event EventHandler OnStart;

In deiner Main Methode kannst du dem OnStart EventHandler ein Event registrieren und das Event manuell triggern.

OnStart += async (sender, e) => await MachEtwas();
OnStart?.Invoke(null, EventArgs.Empty);

Die Methode MachEtwas muss auch ein async Task sein, kein void.

private async Task MachEtwas()
von (497 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.4k Fragen

2.8k Antworten

268 Kommentare

14 Nutzer