ok, so the answer is there on the home page lol. I must have read that page 100 times, doesn't help programming late in to the night.
Can also utilise lamdas, if not using threads
The credentials have a thread scope, it means that when modifying the credentials in a Thread, it will not affect the other threads. You can use the ApplicationCredentials to change the default credentials of all threads.so the static objects are all limited to a thread, set the credentials, then anything else that happens on the thread will use the credentitals. Makes sense now :)
Can also utilise lamdas, if not using threads
var credentials = TwitterCredentials.CreateCredentials("Access_Token", "Access_Token_Secret", "Consumer_Key", "Consumer_Secret");
TwitterCredentials.ExecuteOperationWithCredentials(credentials, () =>
{
Tweet.PublishTweet("myTweet");
});