首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c# Winforms - CLR20r3异常

c# Winforms - CLR20r3异常
EN

Stack Overflow用户
提问于 2017-09-18 07:54:00
回答 1查看 679关注 0票数 1

我开始在Windows764位计算机上运行我的程序,安装了.Net Framework4.5,运行良好。然后我尝试在另一个安装了NetFramework4.5的Windows 7 64和32位机器上运行,我不知道为什么程序停止工作。

代码语言:javascript
运行
复制
Problem Event Name: CLR20r3
  Problem Signature 01: ExDraw.exe
  Problem Signature 02: 1.0.2.3
  Problem Signature 03: 59be5ce4
  Problem Signature 04: mscorlib
  Problem Signature 05: 4.6.1590.0
  Problem Signature 06: 5787ed44
  Problem Signature 07: f9d
  Problem Signature 08: 96
  Problem Signature 09: System.FormatException
  OS Version:   6.1.7601.2.1.0.256.1
  Locale ID:    1033
  Additional Information 1: 0a9e
  Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
  Additional Information 3: 0a9e
  Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

Read our privacy statement online:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
  C:\Windows\system32\en-US\erofflps.txt

这是我的密码

代码语言:javascript
运行
复制
private void DownloadAddonsListCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        var result = StringHelper.DecryptMyString(e.Result);
        foreach (var line in result.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
        {
            var statusAddons = File.Exists("Addons\\" + line.Split('~')[0] + ".addon")
                ? "Installed"
                : "-";

            var localAddonsVersion = "-";
            if (statusAddons != "-")
            {
                localAddonsVersion = File.ReadAllText("Addons\\" + line.Split('~')[0] + ".version");
                if (Convert.ToDouble(localAddonsVersion) < Convert.ToDouble(line.Split('~')[1]))
                    statusAddons = "Outdated";
            }

            var _WebClient = new WebClient();
            var fileName = line.Split('~')[0].Replace(" ", string.Empty) + ".html";
            _WebClient.DownloadFileTaskAsync(line.Split('~')[3],
                RequiredPath.ADDONSDESCRIPTIONPATH + "\\" + fileName).Wait();

            rgvList.Invoke(new Action(() =>
                rgvList.Rows.Add
                (
                    line.Split('~')[0],
                    statusAddons,
                    localAddonsVersion,
                    line.Split('~')[1],
                    line.Split('~')[2],
                    line.Split('~')[3],
                    line.Split('~')[4],
                    RequiredPath.ADDONSDESCRIPTIONPATH + "\\" + fileName
                )));

        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-18 08:24:21

你的问题出在

代码语言:javascript
运行
复制
if (Convert.ToDouble(localAddonsVersion) < Convert.ToDouble(line.Split('~')[1]))
    statusAddons = "Outdated";

您正在将文本转换为“双”,但在机器的当前文化中正在这样做。根据不同的文化,小数分隔符可以是不同的;它可以是".“、”",甚至是其他的东西。你的问题很可能与不同的文化和机器有关。因此,当您进行这些转换时,您应该始终设置一个转换区域性。

但是,您的情况有点不同,因为从您的评论到问题,您试图比较的数据是格式为"1.0.0.0“的版本号。在这种情况下,Double是转换格式的糟糕选择。.NET框架附带了用于这类比较的 class

代码语言:javascript
运行
复制
if (new Version(localAddonsVersion) < new Version(line.Split('~')[1]))
    statusAddons = "Outdated";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46274226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档