--- /dev/null
+#ifndef _cancelablerunnable_\r
+#define _cancelablerunnable_\r
+\r
+#include <Poco/Runnable.h>\r
+#include <Poco/Mutex.h>\r
+\r
+class CancelableRunnable:public Poco::Runnable\r
+{\r
+public:\r
+ CancelableRunnable():m_cancelled(false) {}\r
+\r
+ void Cancel() { Poco::ScopedLock<Poco::FastMutex> g(m_cancelledmutex); m_cancelled=true; }\r
+ const bool IsCancelled() { Poco::ScopedLock<Poco::FastMutex> g(m_cancelledmutex); return m_cancelled; }\r
+\r
+private:\r
+\r
+ Poco::FastMutex m_cancelledmutex;\r
+ bool m_cancelled;\r
+\r
+};\r
+\r
+#endif // _cancelablerunnable_\r