我有一个简单的Windows通用平台应用程序,我主要是为了自学UWP应用程序.它工作正常,除了在StorageFile对象上的OpenReadAsync方法上生成的有点随机的"RPC服务器不可用"错误.
应用程序只是构建一个要显示的文件列表,然后迭代并在计时器上显示每个文件.大多数时候它工作正常.我可以让它运行几个小时没问题.但每隔一段时间,我就会收到RPC错误.这似乎发生在我离开机器很长一段时间,所以它让我退出,然后我重新登录并切换到我的幻灯片应用程序.它不会每次都发生,如果我尝试重现,我永远不会让它失败.这似乎主要是当我离开机器很长一段时间 - 就像一夜之间.
以下是发生错误时运行的代码.它发生在OpenReadAsync方法调用上.
StorageFile file = this._files.ElementAt(this._index++);
await this._dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
{
var bitmap = new BitmapImage();
var stream = await file.OpenReadAsync();
await bitmap.SetSourceAsync(stream);
this.Image = bitmap;
});
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用Windows照片查看器打开文件,即使遇到错误,它也会正常打开.但即使重新尝试失败的代码行也不允许我的应用程序打开文件.我所能做的就是关闭并重启应用程序.
有没有人碰到这样的事情?关于我应该看的地方的任何提示?
谢谢.
编辑:哦,还有一件事 - 文件都在本地驱动器上.不涉及外部服务器或网络.
我正在尝试为 dotnet CLI 创建一个模板项目,并且需要更改项目名称的格式以进行某些替换。具体来说,我们域内的约定使用项目名称的驼峰版本作为需要存储在配置文件中的标识符。
通常,模板会执行看似非常简单的搜索/将模板项目名称替换为您使用 dotnet new 创建的项目的名称。此搜索区分大小写,因此它只会选取大小写完全相同的名称实例。
但就我而言,我还需要它来匹配名称的驼峰式大小写版本,并将其替换为新名称的驼峰式大小写版本。这可能吗?
这个参考资料有相当多的信息,这表明有一个参数生成器支持大小写转换,但特别说它不支持驼峰式大小写。我真正需要的是能够将第一个字符从大写更改为小写。
知道如何插入项目名称的驼峰式大小写版本吗?
这是我的实验 template.json 的大小写和命令行参数,但显然没有骆驼外壳。
{
"$schema": "http://json.schemastore.org/template",
"identity": "TemplateTest.CSharp",
"groupIdentity": "TemplateTest.Console",
"author": "TemplateTest",
"classifications": [ "Common", "Console" ],
"name": "TemplateTest console template",
"shortName": "test",
"preferNameDirectory": true,
"tags": {
"language": "C#"
},
"sourceName": "TemplateTest",
"symbols": {
"apiname": {
"type": "parameter",
"datatype": "text",
"defaultValue": "##FIX THIS##",
"replaces": "templateTest"
},
"nameUpper": {
"type": "generated",
"generator": "casing",
"parameters": {
"source": "name",
"toLower": false
},
"replaces": "TEMPLATETEST"
},
"nameLower": {
"type": "generated", …
Run Code Online (Sandbox Code Playgroud) 我希望能够将接口的 Type 对象作为 ConverterParameter 传递给我的类型转换器。我的想法是,我希望转换器根据源值是否实现特定接口返回一个值。
如果我将类型名称作为字符串传递,我有一个方法可以工作,但我宁愿让它成为一个强类型值,以避免潜在的维护问题,并进行编译时检查,而不是依赖运行时的故障。
这是我使用字符串的转换器:
class InterfaceToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
var type = value.GetType();
if (type.GetInterface(parameter as string) != null)
{ return Visibility.Visible; }
}
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
除了上述潜在的维护问题之外,它的效果很好。
这是您在 xaml 中使用它的方式:
<TabItem Header="General"
Visibility="{Binding ConverterParameter=IMyType, Converter={StaticResource InterfaceToVisibilityConverter}}">
<TextBlock Text="Whatever Content Goes here."/>
</TabItem>
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,它检查当前的 DataContext …