小编Tob*_*ayn的帖子

了解async/await和Task.Run()

我想我明白了async/ awaitTask.Run()相当好,直到我来到这个问题:

我编程使用一个Xamarin.Android应用RecyclerViewViewAdapter.在我的OnBindViewHolder方法中,我尝试异步加载一些图像

public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
    // Some logic here

    Task.Run(() => LoadImage(postInfo, holder, imageView).ConfigureAwait(false)); 
}
Run Code Online (Sandbox Code Playgroud)

然后,在我的LoadImage函数中,我做了类似的事情:

private async Task LoadImage(PostInfo postInfo, RecyclerView.ViewHolder holder, ImageView imageView)
{                
    var image = await loadImageAsync((Guid)postInfo.User.AvatarID, EImageSize.Small).ConfigureAwait(false);
    var byteArray = await image.ReadAsByteArrayAsync().ConfigureAwait(false);

    if(byteArray.Length == 0)
    {
        return;
    }

    var bitmap = await GetBitmapAsync(byteArray).ConfigureAwait(false);

    imageView.SetImageBitmap(bitmap);
    postInfo.User.AvatarImage = bitmap;
}
Run Code Online (Sandbox Code Playgroud)

这段代码有效.但为什么?

我所学到的,在configure await设置为false之后,代码不会在SynchronizationContext(它是UI线程)中运行.

如果我使 …

c# asynchronous task async-await xamarin

20
推荐指数
2
解决办法
5813
查看次数

更改navigationView的单个特定菜单项的背景颜色

我想在导航抽屉里的android菜单中设置所有标题项的背景颜色.我的布局看起来像:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:title="TopItem" android:id="@+id/top_item1"> // Here i want to set the background
    <menu>
      <group>
        <item android:id="@+id/sub_item1"
            android:title="SubItem" /> // Here no background
      </group>
    </menu>
  </item>
  <item android:title="TopItem" android:id="@+id/top_item2">
    <menu>
      <group>
       <item android:id="@+id/sub_item2"
            android:title="SubItem" />
        <item android:id="@+id/sub_item3"
            android:title="SubItem" />
       <item android:id="@+id/sub_item4"
            android:title="SubItem" />
      </group>
    </menu>
</menu>
Run Code Online (Sandbox Code Playgroud)

结果应该看起来像:

在此输入图像描述

我发现我可以使用以下内容设置文本颜色:

MenuItem menuItem = navigationView.getMenu().findItem(R.id.menu_item);
SpannableString s = new SpannableString(menuItem.getTitle());
s.setSpan(new TextAppearanceSpan(this, R.style.TextAppearance), 0, s.length(), 0);

if (menuItem.getItemId()==R.id.nav_targets){            
  menuItem.setTitle(s); }
Run Code Online (Sandbox Code Playgroud)

但是我如何设置填充背景颜色?

java navigation android android-layout navigation-drawer

14
推荐指数
2
解决办法
1634
查看次数

如何在使用 NUnit 或 XUnit 时将参数传递给 dotnet test 命令

我正在使用 C# 和 .NET Core、Selenium 和 NUnit 开发一些端到端测试。现在我想写一个登录测试用例。我的测试是通过使用dotnet test命令从控制台启动的。

我只是想将用户名和密码传递给这个命令并在我的测试中获取它们。我不能使用 NUnit-Console,因为它目前不支持 .NET Core

解决此问题的建议方法是什么?我宁愿不将设置存储在文件中,而是直接将它们输入到控制台中。

c# testing selenium nunit xunit

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

如何测试现代角度应用的性能/负载

我想加载/性能测试使用angular 6+作为前端框架的Web应用程序。该应用程序很大,并使用了许多向导/模态等。我想做一些“真正的” e2e前端测试(不仅测试API调用,还测试js渲染等)。

目前有什么最新的方法和工具来测试这样的应用程序?

为了明确起见,我想进行一些真正的端到端性能测试,例如以无头模式打开浏览器,打开向导并获取向导出现之前所花费的时间。就像使用硒进行前端测试一样。我也可以用硒来做,但我不知道它是否合适。

testing performance load-testing performance-testing angular

8
推荐指数
1
解决办法
5416
查看次数

构建操作“内容”有什么作用?

我正在编写一个 .NET Core 2 控制台应用程序,其中有一些文件想要复制到输出目录。我将“复制到输出目录”设置为 true,并将构建操作设置为“嵌入式资源”。该文件像魅力一样被复制到目录中。但是,如果我将构建操作设置为“内容”,它也会这样做。

微软官方文档说:

  • Content:标记为 Content 的文件可以通过调用 Application.GetContentStream 以流形式检索。对于 ASP.NET 项目,这些
    文件在部署时作为站点的一部分包含在内。
  • 嵌入资源:文件作为要嵌入程序集中的资源传递给编译器。您可以调用 System.Reflection.Assembly.GetManifestResourceStream 从程序集中读取文件。

所以我想如果我将构建操作设置为“内容”,文件将自动复制到输出目录,而无需显式设置标志“复制到输出目录”。但事实似乎并非如此。

那么“内容”实际上是做什么的,什么时候我必须使用它而不是“嵌入资源”?关于何时使用“内容”和何时使用“嵌入式资源”的示例会很好。

c# visual-studio .net-core

8
推荐指数
0
解决办法
4473
查看次数

什么是 moby 运行时?

目前正在学习 docker 和容器化,我对“moby 运行时”这个术语感到有些困惑。

就我的理解而言,整个 docker 已拆分为多个库/工具/组件,允许开发人员使用 moby 运行时构建自己的 docker 版本。

这个假设正确吗?

如果我使用官方 docker 页面,moby 运行时和例如我在 Windows 机器上下载的桌面 docker 之间究竟有什么关系?

为什么例如 Microsoft 使用 moby 运行时来运行一些服务,例如 IoT Edge 而不是官方的 docker build?他们是否使用他们定制的 docker 版本?

linux containers runtime docker moby

7
推荐指数
2
解决办法
3852
查看次数

在 docker 中运行 ac# worker 服务有意义吗?

我正在 docker 中开发一个多容器应用程序。其中一项服务是一个长时间运行的 C# 控制台应用程序,它基本上对数据库进行一些轮询并将数据发送到 e 服务器。我只是通过添加以下语句来保持服务运行:

while(true);
Run Code Online (Sandbox Code Playgroud)

现在我正在考虑将此服务更改为 .NET Core 工作服务(甚至是 windows 服务,因为我只在 windows 主机上使用 windows 容器)。我已经阅读了一些关于 worker 服务优点的文章,但是当涉及到容器化应用程序时,它们似乎都已经过时了,因为我的容器无论如何都是作为一种“后台服务”运行的(而且我每个容器/图像只使用一个服务)。所以我的问题是:

与在 docker 中运行控制台应用程序相比,在 docker 中运行核心工作服务有什么好处或缺点吗?

更新:对于“工作人员服务”,我指的是 .NET Core 3.x 中可用的新工作人员服务模板:https : //www.stevejgordon.co.uk/what-are-dotnet-worker-services

c# docker microservices .net-core asp.net-core

7
推荐指数
2
解决办法
4739
查看次数

Xamarin.Forms BindableProperty 和 WPF DependencyProperty 之间的区别

在 WPF 开发方面拥有丰富的经验,我现在正在尝试创建我的第一个 Xamarin.Forms 应用程序。我认识到有一些与 WPF DependencyProperty等效的东西,称为BindableProperty。它们似乎完全相同,所以我的问题是:

与 WPF DependencyProperty 相比,Xamarin.Forms BindableProperty 的实现和行为之间是否存在任何关键差异?

wpf dependency-properties xamarin property-binding xamarin.forms

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

从 Google Play 商店自动安装 .apk

我正在使用 Python 和我自己的 ADB 协议实现编写一些 Android-TV-App 的端到端测试。到目前为止,这一切正常,我可以发送命令,获取 ui-dumps 等。

但是,由于该应用程序仅在 Google Play 商店中提供(我无权访问任何源代码)并且我想每周更新该应用程序的版本,我想知道如何使用 ADB 执行此操作。

我想到了以下解决方案:

  1. 发送关键事件以在设备上打开 Play 商店并导航到应用程序的安装/更新页面。
  2. 以某种方式将应用程序下载到 Testmachine 并通过 ADB 将其推送到设备。
  3. 使用 ADB 直接在设备上安装新版本的应用程序。

什么是“最佳实践”,我应该如何解决我的问题?

testing android adb apk android-tv

6
推荐指数
2
解决办法
3009
查看次数

如何在 Azure Pipelines 中手动触发单个作业?

我有一个包含两个阶段的简单 Azure Pipeline:

  • 阶段 1:构建
  • 阶段 2:运行测试

第 1 阶段构建源代码并将二进制文件推送到 Azure Artifacts。第 2 阶段下载第 1 阶段的二进制文件并针对它们运行多个测试,对不同的测试使用不同的作业:

  • 作业 1:运行模块 A 的测试
  • 作业 2:为模块 B 运行测试
  • 作业 3:运行模块 C 的测试

这些作业彼此完全独立并并行运行。

如果所有阶段和作业都成功,如何在不再次触发阶段 2 的阶段 1 和作业 1 和 2 的情况下手动触发阶段 2 中的作业 3

一个丑陋的解决方法可能是使用变量并以某种方式运行新管道,如果设置了变量,则跳过第 1 阶段并从前一个管道下载二进制文件。有更好的方法吗?

编辑:ms dev 社区上有一个类似的话题:https : //developercommunity.visualstudio.com/idea/697467/manually-triggered-stages-in-yaml-multi-stage-pipe.html?childToView=903723#comment -903723

continuous-integration azure devops azure-devops azure-pipelines

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