2

次の問題があります。

Console.WriteLine("Starting");
Stopwatch stopWatch = new Stopwatch();
int delay = 1 * 60 * 1000;
int waitTime = delay - (int)(DateTime.Now.Second * 1000);
int time;
Console.WriteLine("PRE-Sleep");
Thread.Sleep(waitTime);
Console.WriteLine("AFTER-Sleep");

出力は次のとおりです。

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

Thread.Sleep(waitTime) を Thread.Sleep(1) に変更すると、次の出力が生成されます。

Starting
PRE-Sleep
AFTER-Sleep

そして、すべてがうまくいきます。

どうしてですか?

mono --version
Mono JIT compiler version 2.10.8.1 (Debian 2.10.8.1-5ubuntu1)
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
 TLS:           __thread
 SIGSEGV:       altstack
 Notifications: epoll
 Architecture:  x86
 Disabled:      none
 Misc:          softdebug
 LLVM:          supported, not enabled.
 GC:            Included Boehm (with typed GC and Parallel Mark)

編集: Xamarin を使用して Windows でコードが正常に動作する

4

1 に答える 1

0

問題が見つかりました: Thread.Sleep に関連していませんでした

このアプリは、Linux で誤ってリンクされた cfg ファイルを読み取りました。

Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)

問題を解決しました。

于 2013-05-07T14:14:25.300 に答える