Возможно, вам будет проще использовать DownloadStringAsync. Таким образом, вы можете анализировать HTML как строку вместо того, чтобы иметь дело с кодированием самостоятельно.
Что касается синтаксического анализа заголовка, вам может показаться, что это сделать немного сложнее, поскольку в .NET нет встроенного анализатора HTML. Вы можете попробовать RegEx или использовать XMLReader, но это может быть проблематично, если у вас искаженный или хитрый контент.
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);