# template class utils::ConcurrentBinding

## Overview

Controller for binding asynchronous processes. More…

    #include <ConcurrentBinding.h>

    template <typename T>
    class ConcurrentBinding: public utils::EventHandler {
    public:
        // methods

        void Run(const std::function<T(void)>& func);
        bool IsRunning() const;
        void SetCallbackOnFinish(const std::function<void(T)>& func);
    };

### Inherited Members

    public:
        // structs

        struct Event;

        // methods

        virtual void PollEvents();

    protected:
        // typedefs

        typedef std::string EventId;

        // methods

        virtual void ProcessEvent(] const Event* e);

        template <typename T = Event, typename... Args>
        void RegisterEvent(Args... args);

## Detailed Documentation

Controller for binding asynchronous processes.

Any function bound to Run function of this class will be executed asynchronously, and checked for finishing. Class can automatically notify user about finishing using PollEvents function of EventHandler super class.

### Methods

    void Run(const std::function<T(void)>& func)

Execute provided function asynchronously from a caller thread.

    bool IsRunning() const

Check if asynchronous function is still running.

    void SetCallbackOnFinish(const std::function<void(T)>& func)

Set callback which will be called via PollEvents after asynchronous function is finished.