Göndermemin adı için özür dilerim ama sorunumu açıklamaya çalışacağım.Dış bir API'ye bağlanmak için güvenli bir iş parçacıklı istemci kitaplığı oluşturun
Harici bir API istemek için istemci kitaplığı oluşturuyorum ve kitaplığımın yöntemlerini güvenli bir şekilde nasıl işleyeceğimi bulmaya çalışıyorum.
Temelde benim kütüphanenin ana sınıfı aşağıdaki gibidir:
public class MyCompanyApiClient
{
private readonly HttpClient _httpClient;
public MyCompanyApiClient(string baseUrl)
{
_httpClient = new HttpClient() {BaseAddress = new Uri(baseUrl)};
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
public async Task<MyClassB> PostData(int id, MyClassA dataToPost)
{
var request = new HttpRequestMessage(HttpMethod.Post, $"objects/{id}");
request.Content = new StringContent(JsonConvert.SerializeObject(dataToPost), Encoding.UTF8,
"application/json");
var response = await _httpClient.SendAsync(request);
response.EnsureSuccessStatusCode();
var stringContent = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<MyClassB>(stringContent);
}
public async Task<MyClassA > GetById(int id)
{
...
}
}
Ben müvekkilimin sınıfının herhangi örnek üyenin, güvenli iş parçacıklı olmasını sağlamak istiyorum
. Şu an için
BenTask.Run
içine her yöntem içinde kod kaydırmak için plan:
public async Task<MyClassB> PostData(int id, MyClassA dataToPost)
{
return await Task.Run(async() =>
{
var request = new HttpRequestMessage(HttpMethod.Post, $"objects/{id}");
request.Content = new StringContent(JsonConvert.SerializeObject(dataToPost), Encoding.UTF8,
"application/json");
var response = await _httpClient.SendAsync(request);
var stringContent = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<MyClassB>(stringContent);
});
}
güvenli iş parçacıklı olmak için bu yöntemi sağlamak için gidiyor onu bile bilmiyorum arada.
Herhangi bir yardım çoklu iş parçacığı anlamına gelmez ^^
Hiç bir iş parçacığı sorunu yok gibi görünüyor. Ne çözmeye çalışıyorsun? –
Bu sınıf, bir eventhub'dan yüksek miktarda ileti işleyen bir masmavi bir ağa dönüştürülecek ve ben güvenli iş parçacığı hakkında herhangi bir sorunum olmayacağından emin olmak istiyorum, ancak ben bu sorunun üstesinden gelinebilir miyim. – Thomas
@Thomas * iş parçacığı güvenli *, değil * güvenli iş parçacığı * –