I have a method like this:
public  List<List<string>>  GroupedNodes(string URL, params string[] XPathes)
{
    //Load HTML Source
    HtmlWeb loader = new HtmlWeb();
    HtmlAgilityPack.HtmlDocument doc = loader.Load(URL);
    //some other codes ...
    //Return result as a List of list
    return grouped;
}
I use HtmlAgilityPack to get html source from an url.
But when I use this method it causes freezing program.
I know I can use multithreading when I call this method in UI BUT I want to write my method in a way to be asynchronous & Responsive itself and when we use it, it works without freezing.
I mean if someone use my method and he/she don't know multithreading ,I want his/her program not to freeze, in the other words, I don't want to call my Method with a thread or task!