// Kod wykonywany w wtku
TInt UsunKatalogiIPliki( const TDesC& aKatalogPoczatkowy )
{
    TInt blad = KErrNone;
    // Usuwanie katalogw i plikw - implementacja pominita
    
    return blad;
}

TInt FunkcjaWatku( TAny* aParametr )
{
    const TDesC* katalogPocz = const_cast<const TDesC*>( aParametr );
    return UsunKatalogiIPliki( *katalogPocz );
}

// ...

// Chcemy usun zawarto katalogu c:\Data. Operacja moe zaj 
// rn ilo czasu, w zalenoci od zawartoci katalogu.
_LIT( KKatalogPoczatkowy, "c:\\data" );
TAny* paramFunkWatku = (TAny*)&KKatalogPoczatkowy();

// Tworzymy wtek.
_LIT( KNazwaWatku, "WatekCzyszczeniaKatalogow" );
const TInt KMinRozmiarSterty = 4*1024;
const TInt KMazRozmiarSterty = 64*1024;

TInt blad = iWatek.Create( KNazwaWatku,
                    FunkcjaWatku,
                    KDefaultStackSize,    // stos 8 KB,
                    KMinRozmiarSterty,    // 4 KB
                    KMazRozmiarSterty,    // 64 KB
                    paramFunkWatku );

if( blad == KErrNone )
{
    // Wtek po utworzeniu ma priorytet EPriorityNormal.
    // Zmieniamy priorytet wtku na EPriorityLess.
    iWatek.SetPriority( EPriorityLess );

    // Uruchamiamy wtek.
    iWatek.Resume();
}

// ...

// W dowolnej chwili moemy sprawdzi, czy wtek zosta
// ju wykonany, a jeeli tak, to jaki jest wynik operacji
// usuwania katalogw i plikw.
if( iWatek.ExitType() != EExitPending )
{
    // Funkcja wtku zostaa wykonana - sprawdzamy, jak
    // warto zwrcia.
    TInt ret = iWatek.ExitReason();

    if( ret != KErrNone )
    {
        // Obsuga bdu
    }
}
