:meth:`WStoppableTask.stop` implementation that sets stop even (if available), calls
		:meth:`WStoppableTask.threaded_stopped` and cleans up thread (if configured)

def stop(self):
		""" :meth:`WStoppableTask.stop` implementation that sets stop even (if available), calls
		:meth:`WStoppableTask.threaded_stopped` and cleans up thread (if configured)
		"""
		thread = self.thread()
		if thread is not None:
			if self.stop_event() is not None:
				self.stop_event().set()

			self.thread_stopped()

			if self.stop_event() is not None:
				thread.join(self.join_timeout())
				self.close_thread()