// The thread procedure performs the task, such as formatting // and printing a document. public void ThreadProc() { CookieAwareWebClient cln = new CookieAwareWebClient(); cln.CookieContainer.SetCookies(new Uri("https://www.humblebundle.com"), "_simpleauth_sess=" + token + ";"); this.Res = cln.DownloadString("https://www.humblebundle.com/api/v1/order/" + gaem); Dictionary <string, object> vals = JsonConvert.DeserializeObject <Dictionary <string, object> >(this.Res, new JsonConverter[] { new MyConverter() }); if (vals.TryGetValue("subproducts", out var o)) { var jarr = (JArray)o; foreach (JObject root in jarr) { var subp = root.ToObject <Dictionary <string, object> >(); if (library.GameFromDict(cln, subp, out var info1, out var meta)) { var data = new HumbleGameData() { PurchaseID = gaem, Name = info1.Name, Info = info1, Meta = meta, Json = root.ToString(), MachineName = info1.GameId }; if (Values.Keys.Contains(info1.Name)) { logger.Info("DOUBLE: " + gaem + " " + info1.Name); } else { Values.Add(info1.Name, data); } } } } }