我在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)
请协助。
由于
尼尔
答案 0 :(得分:2)
我在运行debian squeeze的web服务器上遇到了类似的问题。 This post给了我一个线索。
我设置了一个虚拟机并使用apt-get安装了整个monodevelop并且它工作正常。 由于我不想在生产机器上安装那么多软件包和依赖项,我花了几个小时来隔离丢失的软件包。
就我而言,他们只缺少3个包(libmono-system-xml-linq4.0-cil,libmono-system-componentmodel-dataannotations4.0-cil和libmono-system-componentmodel-composition4.0-cil) ,但当然这取决于你的申请。
根据错误消息,找出解决方案并不容易!
答案 1 :(得分:1)
可能这个答案可以帮到你..
Mono-LibreOffice System.TypeLoadException
您是否尝试在mono下编译相同的程序并尝试运行它?
你还使用哪个版本的单声道?可能需要将其更新到最新版本。
mono --version
v 2.10看起来是最新的稳定版本 http://www.go-mono.com/mono-downloads/download.html
答案 2 :(得分:0)
虽然问题是通过安装丢失的软件包修复的,但我注意到在通过Nuget引用DLL时也会出现此错误:Monodevelop没有将这些DLL复制到输出文件夹(即/ bin / Debug),这使我的程序无法跑。调试器甚至无法进入第一行代码!在Ubuntu 16.04上发生了这种情况。检查输出文件夹,如果您发现某些DLL丢失,您应该尝试手动复制它们,看看您的应用程序现在是否运行。