Solution #1:
Instantiate a new instance of Car every time the method is called.
public static void DoSomething()
{
Car c = new Car();
c.NonStaticMethod();
}
Solution #2:
Pass a Car to the method.
public static void DoSomething(Car c)
{
c.NonStaticMethod();
}
Solution #3:
Use a singleton Car to support the static method. (If calls from multiple threads are a possibility, you might also need locking. Note that System.Windows.Forms.Timer does not introduce a thread.)
public class Car
{
private static Car m_Singleton = new Car();
public static void DoSomething()
{
m_Singleton.NonStaticMethod();
}
Note that you have not explained your memory problems with Timer. It is very possible that there is a solution to that underlying problem.