#pragma once

#include "Thread.h"
#include <functional>

namespace Framework
{
    class AsynchronCall : private Thread
    {
    private:
        std::function< void() > f;
        bool *finished;

        void thread() override;
        void threadEnd() override;

    public:
        // Konstruktor
        //  f: Die Funktion die asynchron aufgerufen werden soll
        //  Muss mit new aufgerufen werden. Das Objekt l�scht sich selbst
        __declspec( dllexport ) AsynchronCall( std::function< void() > f );
        // Konstruktor
        //  f: Die Funktion die asynchron aufgerufen werden soll
        //  finished: Wird auf 1 gesetzt wenn der Aufruf abgearbeitet wurde
        //  Muss mit new aufgerufen werden. Das Objekt l�scht sich selbst
        __declspec( dllexport ) AsynchronCall( std::function< void() > f, bool *finished );
    };
}