小编Jim*_*hey的帖子

可重用的 HttpClient 实例与静态变量(在多个线程中大量使用)?

我目前有一个 a 的实例变量HttpClient,在实例方法中使用它来下载图像。该方法始终在 a 中调用Task.Run()。该方法可以在一分钟内被调用数千次,并且不会崩溃或产生任何错误。但我只是想知道,除了static HttpClient可能更加线程安全之外,如果我切换到 a 还会有什么好处(如果有的话)。

这是上下文的一些代码:

HttpClient client = new HttpClient(); // Make this static?

// Always called in a Task.Run(() => DownloadImage(Obj));
public async void DownloadImage(Object obj)
{
    FormUrlEncodedContent formContent = GetFormContent(Obj);
    HttpResponseMessage Result = await client.PostAsync("URL", formContent).ConfigureAwait(false);
    byte[] Data = Result.Content.ReadAsByteArrayAsync().Result;
    StaticClass.Images[Obj.ID] = ImageSource.FromStream(() => new MemoryStream(Data));
    formContent.Dispose();
    Result.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

c# static asynchronous httpclient task

6
推荐指数
1
解决办法
7855
查看次数

获得第二高的薪水,如果没有第二高的薪水则返回null

如果满足
以下条件,则必须返回Null:-表中少于2行
-没有第二高的工资,因为每个人的工资都相同

我查找的所有内容似乎都针对旧版本的Sql Server

DECLARE @find int = (Select COUNT(*) from Employee);

IF (@find = 1)
    select null as 'SecondHighest'
else
    select Salary as 'SecondHighest' 
    from Employee
    order by Salary desc
    offset 1 rows fetch next 1 rows only;
Run Code Online (Sandbox Code Playgroud)

如果少于2列,我设法返回null,尽管我认为可能有更好的方法。但是,我无法解决第二个问题:
“没有第二高的薪水,因为每个人的薪水都相同”

sql t-sql sql-server

3
推荐指数
2
解决办法
565
查看次数

标签 统计

asynchronous ×1

c# ×1

httpclient ×1

sql ×1

sql-server ×1

static ×1

t-sql ×1

task ×1