Question: Let's say we have a `Person` model with `email`, `bounced` and `bounced_date` fields.

We want to allow users to have more than one email address. We create a separate `EmailAddress` model with `address`, `bounced`, `bounced_date`, and a `ForeignKey` field to `Person`. We use `order_with_respect_to` so users can have email addresses ordered by preference. Writing the migration needs a few lines of SQL.

We also define `email` property in the `Person` model which return the `address` field of the first related `EmailAddress`, so we don't need to make code changes everywhere the `email` field was used on our `Person` objects.

The last thing I cannot find a way to do is finding a way to have `.get(email='example@example.com')` still working. `EmailAddress` are unique so there should still be a unique user attached to each email address.

I know I can use `.get(emailaddress__address='example@example.com')`, but if possible, I would like not having to change the code everywhere in the project. To be clear, I would like `email` to be mapped to `emailaddres__address` in `.get` and `.filter` methods.

Answer: 
To multithread make sure you're using the `using System.Threading;` at the top then simply do this:

```
Thread thread = new Thread(yourFuntionHere(params));
thread.Start();

```

The thread will close itself after the method is complete, so no need to worry about that!
This is a common problem. There are multiple ways to solve the problem but probably the most straightforward is the `BackgroundWorker` class. (see: <https://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v=vs.110).aspx>)