我想我明白了async/ await和Task.Run()相当好,直到我来到这个问题:
我编程使用一个Xamarin.Android应用RecyclerView了ViewAdapter.在我的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线程)中运行.
如果我使 …
我想在导航抽屉里的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)
但是我如何设置填充背景颜色?
我正在使用 C# 和 .NET Core、Selenium 和 NUnit 开发一些端到端测试。现在我想写一个登录测试用例。我的测试是通过使用dotnet test命令从控制台启动的。
我只是想将用户名和密码传递给这个命令并在我的测试中获取它们。我不能使用 NUnit-Console,因为它目前不支持 .NET Core。
解决此问题的建议方法是什么?我宁愿不将设置存储在文件中,而是直接将它们输入到控制台中。
我想加载/性能测试使用angular 6+作为前端框架的Web应用程序。该应用程序很大,并使用了许多向导/模态等。我想做一些“真正的” e2e前端测试(不仅测试API调用,还测试js渲染等)。
目前有什么最新的方法和工具来测试这样的应用程序?
为了明确起见,我想进行一些真正的端到端性能测试,例如以无头模式打开浏览器,打开向导并获取向导出现之前所花费的时间。就像使用硒进行前端测试一样。我也可以用硒来做,但我不知道它是否合适。
testing performance load-testing performance-testing angular
我正在编写一个 .NET Core 2 控制台应用程序,其中有一些文件想要复制到输出目录。我将“复制到输出目录”设置为 true,并将构建操作设置为“嵌入式资源”。该文件像魅力一样被复制到目录中。但是,如果我将构建操作设置为“内容”,它也会这样做。
微软官方文档说:
- Content:标记为 Content 的文件可以通过调用 Application.GetContentStream 以流形式检索。对于 ASP.NET 项目,这些
文件在部署时作为站点的一部分包含在内。- 嵌入资源:文件作为要嵌入程序集中的资源传递给编译器。您可以调用 System.Reflection.Assembly.GetManifestResourceStream 从程序集中读取文件。
所以我想如果我将构建操作设置为“内容”,文件将自动复制到输出目录,而无需显式设置标志“复制到输出目录”。但事实似乎并非如此。
那么“内容”实际上是做什么的,什么时候我必须使用它而不是“嵌入资源”?关于何时使用“内容”和何时使用“嵌入式资源”的示例会很好。
目前正在学习 docker 和容器化,我对“moby 运行时”这个术语感到有些困惑。
就我的理解而言,整个 docker 已拆分为多个库/工具/组件,允许开发人员使用 moby 运行时构建自己的 docker 版本。
这个假设正确吗?
如果我使用官方 docker 页面,moby 运行时和例如我在 Windows 机器上下载的桌面 docker 之间究竟有什么关系?
为什么例如 Microsoft 使用 moby 运行时来运行一些服务,例如 IoT Edge 而不是官方的 docker build?他们是否使用他们定制的 docker 版本?
我正在 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
在 WPF 开发方面拥有丰富的经验,我现在正在尝试创建我的第一个 Xamarin.Forms 应用程序。我认识到有一些与 WPF DependencyProperty等效的东西,称为BindableProperty。它们似乎完全相同,所以我的问题是:
与 WPF DependencyProperty 相比,Xamarin.Forms BindableProperty 的实现和行为之间是否存在任何关键差异?
wpf dependency-properties xamarin property-binding xamarin.forms
我正在使用 Python 和我自己的 ADB 协议实现编写一些 Android-TV-App 的端到端测试。到目前为止,这一切正常,我可以发送命令,获取 ui-dumps 等。
但是,由于该应用程序仅在 Google Play 商店中提供(我无权访问任何源代码)并且我想每周更新该应用程序的版本,我想知道如何使用 ADB 执行此操作。
我想到了以下解决方案:
什么是“最佳实践”,我应该如何解决我的问题?
我有一个包含两个阶段的简单 Azure Pipeline:
第 1 阶段构建源代码并将二进制文件推送到 Azure Artifacts。第 2 阶段下载第 1 阶段的二进制文件并针对它们运行多个测试,对不同的测试使用不同的作业:
这些作业彼此完全独立并并行运行。
如果所有阶段和作业都成功,如何在不再次触发阶段 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
c# ×4
testing ×3
.net-core ×2
android ×2
docker ×2
xamarin ×2
adb ×1
android-tv ×1
angular ×1
apk ×1
asp.net-core ×1
async-await ×1
asynchronous ×1
azure ×1
azure-devops ×1
containers ×1
devops ×1
java ×1
linux ×1
load-testing ×1
moby ×1
navigation ×1
nunit ×1
performance ×1
runtime ×1
selenium ×1
task ×1
wpf ×1
xunit ×1