0

我用 C# 编写了一个小应用程序,它没有问题。目标框架是 .NET 4。

当我在 linux - mono 下运行应用程序时,应用程序启动没有问题。

但是,我似乎对单声道下的线程有问题。

下面的代码:

 try
                {
                    Thread oThread = new Thread(new ParameterizedThreadStart(this.SendSms));
                    oThread.IsBackground = true;
                    oThread.Start(_data);

                    while (!oThread.IsAlive)
                    {
                        Console.WriteLine("Sleeping...");
                        Thread.Sleep(1);
                    }

                }
                catch (TypeLoadException tlex)
                {
                    Console.WriteLine("TypeLoadException: " + tlex.Message);

                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

它似乎没有到达 SendSms 方法,而是抛出以下错误:

Unhandled Exception: system.TypeLoadException: A type load exception has occurred. at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: A type load exception has occurred. at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0

现在我是 Mono 的新手,所以首先不知道为什么会发生这个未处理的异常,因为参数化线程的代码来自“http://www.mono-project.com/ThreadsBeginnersGuide”。其次,为什么当我放入 catch 时它没有处理(TypeLoadException tlex)

请协助。

谢谢

尼尔

4

3 回答 3

2

我在运行 debian 挤压的 Web 服务器上遇到了类似的问题。 这篇文章给了我一个线索。

我设置了一个虚拟机并使用 apt-get 安装了整个 monodevelop,它工作正常。因为我不想在生产机器上安装那么多包和依赖项,所以我花了几个小时来隔离丢失的包。

就我而言,它们仅缺少 3 个软件包(libmono-system-xml-linq4.0-cil、libmono-system-componentmodel-dataannotations4.0-cil 和 libmono-system-componentmodel-composition4.0-cil),但当然,这将取决于您的应用程序。

根据错误信息,想出解决办法并不容易!

于 2013-08-26T13:40:20.767 回答
1

可能这个答案可以帮助你..

Mono-LibreOffice System.TypeLoadException

您是否尝试过在单声道下编译相同的程序并尝试运行它?

还有你用的是哪个版本的单声道??可能需要将其更新到最新版本。

单--版本

v 2.10 看起来是最新的稳定版本。
http://www.go-mono.com/mono-downloads/download.html

于 2012-09-28T15:48:07.657 回答
0

虽然通过安装丢失的包解决了这个问题,但我注意到在通过 Nuget 引用 DLL 时您也可能会收到此错误:Monodevelop 没有将这些 DLL 复制到输出文件夹(即 /bin/Debug),这使我的程序无法运行。调试器甚至无法进入第一行代码!这在 Ubuntu 16.04 上发生在我身上。检查您的输出文件夹,如果您发现某些 DLL 丢失,您应该尝试手动复制它们并查看您的应用程序现在是否运行。

于 2016-10-02T11:53:45.057 回答