Zavolání metody v C# pouze jednou   zodpovězená otázka

C#

Dobrý den,

pokud bych chtěl vytvořit metodu, která může být v dané situaci vyvolána pouze jednou, jak to nejlépe udělat?

Napadá mne vytvořit proměnou typu bool, kterou při spuštění metody nastavit na true a na konci na false. Spustí-li se metoda, když je proměnná nastavena na false, tak vyvolat vyjímku?

Ještě doplním, že cílem je, aby ta metoda nešla spustit dvakrát nebo že se to uživatel dozví, že se nespustila podruhé (proto ta vyjímka).

Předem díky za reakce

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Resis moc detailne blbosti. Udelej to presne tak jak pises, bool hodnota nebo vyjimka.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud byste to chtěl mít správně i pro multithreading prostředí, můžete použít například metodu Monitor.TryEnter:

bool acquiredLock = false;

try
{
    Monitor.TryEnter(lockObject, ref acquiredLock);
    if (!acquiredLock)
    {    
        throw new InvalidOperationException("Akce již běží.");
    }

    //TODO: Tělo metody
}
finally
{
    if (acquiredLock)
    {
        Monitor.Exit(lockObject);
    }
}

Jinak stačí řešení s jednou bool proměnnou jak popisujete.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky za odpověď

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback