C#在运行时出现以下错误:InvalidArgument="0"的值对于"index"无效.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#在运行时出现以下错误:InvalidArgument="0"的值对于"index"无效.相关的知识,希望对你有一定的参考价值。
初步判定是SelectedItems里面没有元素,所以SelectedItems[0]取值出现错误。要确定此判断是否正确,在该语句前设断点,调试进去,运行到这一句时观察SelectedItems的内容。
可以先判断SelectedItems的长度是否为0,如果为0则进行其它处理,大于零再运行此语句。 参考技术A 这是数组溢出的错误,确认下lvFiles.SeletedItems 是否为空。 参考技术B 岐王宅里寻常见,崔九堂前几度闻.
从桌面应用程序使用 WinRT 时出现 C#“等待”错误
【中文标题】从桌面应用程序使用 WinRT 时出现 C#“等待”错误【英文标题】:C# "await" error when using WinRT from Desktop app 【发布时间】:2014-03-04 10:47:19 【问题描述】:我尝试使用 C# 中的 Windows 运行时从桌面应用程序获取我的 GPS 位置。
我跟随this how-to 设置Visual Studio 和this code sample 创建以下琐碎代码作为C# 控制台应用程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime;
using System.Windows;
using Windows;
using Windows.Devices.Geolocation;
using Windows.Foundation;
using Windows.Foundation.Collections;
namespace GeoLocCS
public sealed partial class Program
static void Main(string[] args)
Test test = new Test();
Console.Read();
public class Test
private Geolocator geolocator;
public Test()
Console.WriteLine("test");
geolocator = new Geolocator();
this.getPos();
async void getPos()
Geoposition pos = await geolocator.GetGeopositionAsync();
Console.WriteLine(pos.Coordinate.Latitude.ToString());
尝试编译时,出现错误:
Error 1 'await' requires that the type 'Windows.Foundation.IAsyncOperation<Windows.Devices.Geolocation.Geoposition>' have a suitable GetAwaiter method. Are you missing a using directive for 'System'?
我尝试引用每个可以引用的 DLL,例如“System.runtime”、“System.Runtime.WindowsRuntime”、“Windows.Foundation”...
我错过了什么?
谢谢你的回答,
谢尔盖
【问题讨论】:
听起来像重复,我想***.com/questions/13125793/… 可能会给你一个解决方案 @RemcoBrilstra 我也希望它会,但没有。我尝试引用System.Runtime.WindowsRuntime.dll
,但仍然收到错误。
【参考方案1】:
我终于找到了我的问题:
我使用的是 8.1,所以我在 .csproj 文件 (targetingPlatform) 中更改了此设置,而不是针对 8.0 修改后,我可以引用“Windows”我手动引用了以下两个 DLL:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades\System.Runtime.dll
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Runtime.WindowsRuntime.dll
【讨论】:
这解决了我的问题!一切都是从 2011 年开始的,对于 Windows 8.0,非常感谢您!【参考方案2】:如果你是 Win8.1 请使用:
<TargetPlatformVersion>8.1</TargetPlatformVersion>
而不是 8.0。
【讨论】:
【参考方案3】:添加到现有答案:
我突然在 WPF 中使用多项目解决方案遇到了这个问题(仍然不知道为什么)。我尝试在 TargetPlatformVersions 8.1 和 10.0 之间切换,尝试使用 v4.5- 和 v4.5.1-System.Runtime.WindowsRuntime.dll,总是在 BadImageFormatException 和 FileNotFoundException 之间交替。
原来是某些 app.config 文件(不是 .csproj 文件!)中的引用。 Visual Studio 2017 一定是在某个时候添加了它们,一旦我删除了这些条目,上述解决方案终于奏效了。
【讨论】:
你是对的,在我的情况下,设置<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/>
会导致问题。以上是关于C#在运行时出现以下错误:InvalidArgument="0"的值对于"index"无效.的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 C# .Net Core 3 中连接到 MySql 时出现错误
Angular Project 在运行 yarn start 时出现以下错误
将 vs 2012 C# 与 visio 2007 集成时出现 Com 错误