diff --git a/async_tkinter_loop/async_tkinter_loop.py b/async_tkinter_loop/async_tkinter_loop.py index 7e23abb..9547629 100644 --- a/async_tkinter_loop/async_tkinter_loop.py +++ b/async_tkinter_loop/async_tkinter_loop.py @@ -53,6 +53,8 @@ def async_mainloop(root: tk.Tk, event_loop: asyncio.AbstractEventLoop | None = N P = ParamSpec("P") +_tasks = set() + def async_handler( async_function: Callable[P, Coroutine[Any, Any, None]], @@ -109,6 +111,8 @@ async def some_async_function(): @wraps(async_function) def wrapper(*handler_args) -> None: loop = event_loop or get_event_loop() - loop.create_task(async_function(*handler_args, *args, **kwargs)) + task = loop.create_task(async_function(*handler_args, *args, **kwargs)) + _tasks.add(task) + task.add_done_callback(_tasks.discard) return wrapper