You may find it easier to use DownloadStringAsync. That way, you can parse the HTML as a string rather than having to deal with encoding yourself.
As far as how to parse the title, you may find that a bit more difficult to do, since .NET doesn't have a built-in HTML parser. You could try some RegEx or use XMLReader, but those can be problematic if you have malformed or tricky content.
var client = new WebClient();
client.DownloadStringCompleted += (s, args) => {
if (args.Error == null && !args.Cancelled) {
var regex = new Regex("<title>(?<title>.*?)</title>");
var match = regex.Match(args.Result);
if (match.Success)
{
var myTitle = match.Groups["title"].Value;
// ...
}
}
};
client.DownloadStringAsync(url);