Variables aren't the same thing as the instance they contain: just setting a variable to null doesn't change the object it used to "point to", and it doesn't in any way mean that the system will immediately destroy (or even begin the process of destroying) the object itself.
Think of it in terms of cars: you own a car. You put your mobile in the glove box and sell the car. The new owner drives off into the sunset in his new car.
Where is your mobile?
You sold the car: you set the "pointer" "my car" to null - but that doesn't change the car itself in any way! It still drives, it still needs fuel, it still has your mobile in the glove box. Just you can't access the car, it's glove box, or your mobile any more because you discarded the only reference you had to it.
When you set up a timer it runs until all references to it are gone, and
the system gets so low on memory that the Garbage Collector is kicked into action to decide what to dispose.
You want to stop the timer? Do just that:
obj.t.Enabled = false;
obj = null;