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 (619 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 (486 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
  • Beiträge bewerten
  • Inhalte bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft. Unser Ziel: Guter Inhalt. Für alle.

2.3k Fragen

2.8k Antworten

260 Kommentare

12 Nutzer