Assuming your MyMethod is actually thread safe then the following should work using the Parallel.ForEach() method in .Net 4.0. I'm tracking the individual summaries in a ConcurrentDictionary so you can reference them by link later if you need to.
I've also assumed that you changed MyMethod() to return the summary.
List<string> links = new List<string>() { link1, link2, link3};
ConcurrentDictionary<string, string> summariesByLink = new ConcurrentDictionary<string, string>();
Parallel.ForEach(links, link => {
if (!string.IsNullOrEmpty(link))
{
string[] link_ar = link.Split(sep, StringSplitOptions.None);
string page = link_ar[1];
string filter = link_ar[2];
string code = link_ar[3];
string summary = MyMethod( page, filter, code);
summariesByLink.Add(link, summary);
}
}