小编Ben*_*all的帖子

任何区分取消和超时的方法

我有一些代码通过调用许多其他服务来验证某些数据.我并行启动所有调用,然后等到其中至少一个完成.如果任何请求失败,我不关心其他调用的结果.

我打电话,HttpClient我已经通过了HttpMessageHandler一个记录.实质上:

protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
    HttpResponseMessage response = null;

    try
    {
        response = await base.SendAsync(request, cancellationToken);
    }
    catch (OperationCanceledException ex)
    {
        LogTimeout(...);
        throw;
    }
    catch (Exception ex)
    {
        LogFailure(...);
        throw;
    }
    finally
    {
        LogComplete(...);
    }

    return response;
}
Run Code Online (Sandbox Code Playgroud)

当我取消请求时,我遇到麻烦的部分没有.当我取消请求时,我是故意这样做的,所以我不希望它被记录为超时,但是在取消和实际超时之间似乎没有任何区别.

反正有没有完成这个?

编辑: 我需要澄清一下这一点.并行调用的服务是使用超时传递CancellationTokens:

var ct = new CancellationTokenSource(TimeSpan.FromSeconds(2));
Run Code Online (Sandbox Code Playgroud)

因此,当服务器响应时间超过两秒时,我得到一个OperationCanceledException,如果我手动取消令牌源(比如因为另一台服务器在1秒后返回错误),那么我仍然得到一个OperationCanceledException.理想情况下,我将能够看到CancellationToken.IsCancellationRequested以确定它是否被取消,由于超时,而不是明确要求被取消,但现在看来,你得到相同的值,而不管怎么就被取消了.

c# http cancellation cancellationtokensource dotnet-httpclient

11
推荐指数
2
解决办法
3307
查看次数

如何在空或使用 display:none 时使 CSS 网格单元折叠?

TL;DR:Codepen https://codepen.io/veleek/pen/YmJGjY显示网格单元格display: none似乎会导致相邻单元格占用更少的空间而不是折叠成空。

我正在创建一个简单的 CSS 网格布局,顶部有一个横幅,下面有一个徽标、标题、链接栏和一个内容块。

粗略的布局

对于没有导航链接的页面,我想折叠导航部分,以便标题占据整个空间。实际上,我希望该网格单元的高度为 0px。

不幸的是,当我display: none在那个单元格上设置时,它消失了,但它似乎占用了更多空间。这实际上会导致标题自身折叠为 SMALLER,然后当该单元格存在时。

标题折叠变小

图像大小不固定为 150 像素,如果可能,我宁愿避免使用固定大小。我只想强制该网格行在空时具有 0 高度。我尝试了一堆 的组合display:block/flexalign-items/justify-content/etc.: stretch/center/etc.但似乎没有任何效果。

我有一个 CodePen 在这里显示了这个问题:https ://codepen.io/veleek/pen/YmJGjY

html css css-grid

3
推荐指数
1
解决办法
1962
查看次数