Passing data to thread

This might not be 100% Fez related but it will probably save me from asking the question in the future. When you have a thread you can only pass in one parameter so I passed in a object array. Lets say the array has data of the textbox, how can I do the following example with threading

public void GetIpInfo(string url, WebBrowser b)
            StringBuilder sr = new StringBuilder();
public void GetIpInfo(object array)
            object[] data = array as object[];
            //the webrswer control to use is in the object array, how can I do it as shown in the first example

You don’t need to pass variables to the thread function. Make the function part of a dedicated class, and you’ll have access to all the class members.

See my implementation of the abstract ascii line processor on codeshare:

Rather than pass an object array, you can pass an instance of a class. For example (This is not tested, I just typed it up here so consider it pseudo code)

class MyThreadData
  public string Url {get; set;}
  public WebBrowser Browser {get; set;}

// Create the MyThreadData instance and populate it
MyThreadData theData = new MyThreadData(){Url="...", Browser = theBrowser};

// Create the thread
Thread myThread = new Thread(new ThreadProc(GetIpInfo));

// Start the thread passing the instance of the MyThreadData

public void GetIpInfo(object state)
  MyThreadData data = (MyThreadData)state;
  // use data here...