Вам нужен класс BackgroundwWorker
.Вы используете это так: -
var bw = new BackgroundWorker()
bw.DoWork += (s, args) =>
{
// This runs on a background thread.
var resource = System.Windows.Application.GetResourceStream(new Uri(string.Format("testProj;component/{0}", fileName), UriKind.Relative));
StreamReader streamReader = new StreamReader(resource.Stream);
string jsonText = streamReader.ReadToEnd();
jsonList = JsonConvert.DeserializeObject<List<ComicItem>>(jsonText);
// Other stuff with data.
};
bw.RunWorkerCompleted += (s, args) =>
{
// Do your UI work here this will run on the UI thread.
// Clear progress bar.
};
// Set progress bar.
bw.RunWorkerAsync();
Кстати, вы уверены, что не можете использовать DataContractJsonSerializer
?Тот факт, что вы чувствуете необходимость делать это асинхронно, предполагает, что объем данных достаточно велик, а объем памяти по сравнению с WP7 выше.Подход JSON.NET требует, чтобы вы прочитали весь поток JSON в строку, прежде чем десериализовать его, тогда как DataContractJsonSerializer может десериализировать непосредственно из потока.