Skip to content

Commit c18c928

Browse files
committed
More parallel, async/await, threading stuff
1 parent d381349 commit c18c928

File tree

3 files changed

+55
-22
lines changed

3 files changed

+55
-22
lines changed

SmartImage.Lib/SearchClient.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -283,10 +283,14 @@ private void GetResultContinueCallback(Task<SearchResult> task, object state)
283283
var autoResetEvent = ((AutoResetEvent) DirectResultsWaitHandle);
284284

285285

286-
if (DirectResults.Count > 0 &&
287-
!DirectResultsWaitHandle.SafeWaitHandle.IsClosed /*|| ContinueTasks.Count==1*/) {
288-
Debug.WriteLine("wait handle set");
289-
autoResetEvent.Set();
286+
if (DirectResults.Count > 0 /*||
287+
!DirectResultsWaitHandle.SafeWaitHandle.IsClosed*/ /*|| ContinueTasks.Count==1*/) {
288+
289+
if (!DirectResultsWaitHandle.SafeWaitHandle.IsClosed) {
290+
Debug.WriteLine("wait handle set");
291+
autoResetEvent.Set();
292+
293+
}
290294
}
291295

292296
DirectResultCompleted?.Invoke(null, EventArgs.Empty);

SmartImage.Lib/Searching/SearchResult.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ public List<ImageResult> FindDirectResultsAsync()
149149

150150
var directResults = new List<ImageResult>();
151151

152-
var ll = Parallel.For(0, AllResults.Count, (i, pls) =>
152+
var ll = Parallel.For(0, AllResults.Count, async (i, pls) =>
153153
{
154154
var allResult = AllResults[i];
155155

SmartImage.Lib/Utilities/ImageHelper.cs

Lines changed: 46 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -152,32 +152,61 @@ public static bool IsImage(string url, out DirectImage di, int timeout = Timeout
152152
// var task = url.GetAsync();
153153
// task.Wait();
154154
/*try {
155-
var task = new HttpRequestMessage( HttpMethod.Get, url);
156-
var cc =new HttpClient(){};
155+
// var r = new HttpRequestMessage(HttpMethod.Get, url);
157156
158-
var rg1 =cc.Send(task);
157+
var clientHandler = new HttpClientHandler()
158+
{
159+
AllowAutoRedirect = true,
160+
MaxAutomaticRedirections = 50,
161+
ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) =>
162+
{
163+
return true;
164+
}
165+
};
166+
167+
168+
var cc = new HttpClient(clientHandler)
169+
{
170+
Timeout = TimeSpan.FromMilliseconds(timeout)
171+
};
172+
173+
var rrr = cc.GetByteArrayAsync(url, token ?? CancellationToken.None);
174+
rrr.Wait();
175+
176+
// var rg11 = cc.GetByteArrayAsync(url, token ?? CancellationToken.None);
177+
// rg11.Wait();
178+
// task.Wait();
179+
// var rgx1 = rg11.Result;
180+
181+
// var rgx1 = rg11.Result;
182+
var rgx1 = rrr.Result;
183+
184+
var data = MediaTypes.ResolveFromData(rgx1);
185+
186+
if (data.StartsWith(image) && data != svg_xml)
187+
{
188+
return true;
189+
}
190+
191+
// var task = HttpUtilities.GetHttpResponseAsync(url, timeout, HttpMethod.Get, token: token);
192+
var rg1t = cc.GetAsync(url, token ?? CancellationToken.None);
193+
rg1t.Wait();
194+
var rg1=rg1t.Result;
195+
// var rg1 = task.Result;
159196
// var rg1 = task.Result;
160197
if (!rg1.IsSuccessStatusCode) {
161198
return false;
162199
}
200+
163201
// var contentType = rg1.ResponseMessage.Content.Headers.ContentType.MediaType;
164202
var contentType = rg1.Content.Headers.ContentType.MediaType;
165203
204+
166205
if (contentType.ToString().StartsWith(image) && contentType != svg_xml) {
167206
return true;
168207
}
169208
170-
var rrr = rg1.Content.ReadAsByteArrayAsync();
171-
172-
// var rrr=rg1.ResponseMessage.Content.ReadAsByteArrayAsync();
173-
rrr.Wait();
174-
var rgx1 = rrr.Result;
175-
176-
var data = MediaTypes.ResolveFromData(rgx1);
177-
178-
if (data.StartsWith(image)&&data!=svg_xml) {
179-
return true;
180-
}
209+
181210
}
182211
catch (Exception e) {
183212
Debug.WriteLine($"{e.Message}");
@@ -213,13 +242,13 @@ public static bool IsImage(string url, out DirectImage di, int timeout = Timeout
213242
// The content-type returned from the response may not be the actual content-type, so
214243
// we'll resolve it using binary data instead to be sure
215244

216-
217245

218246
var length = response.Content.Headers.ContentLength;
219247
di.Response = response;
220-
221-
248+
249+
222250
string mediaType;
251+
223252
try {
224253
mediaType = ResolveMediaTypeFromData(url, token);
225254
}

0 commit comments

Comments
 (0)