If you are worried about the resources being used by the task being there even when not running, you need to ask yourself can you be sure that they will be there when you need to start the task to send the message, and if not, do you have a recovery strategy? Also, one danger of creating and destroying the task regularly is that every time you release the memory and then need to reaquire it, there is a possibility of fragmenting the free space on the heap, and in certain pathological cases, you can fragment it so much that even though there is plenty of total space left, there is no one chunk big enough to meet the current need.
My general attitude is that unless there is a real need to dynamically share memory between operations, it is best to just create static assignments at startup so you know there is enough for everything needed. Only when there isn’t enough memory to give everything the memory it might need does it make sense to go to a dynamic allocation, and then you need to take care to handle the possible out of memory errors.