2016-04-12 5 views
9

Ich arbeite mit .NET Core auf meinem Mac-Computer.Thread.Sleep() in .NET Core auf Mac

Irgendwo in meinem Code möchte ich diesen Code verwenden:

System.Threading.Thread.Sleep(100); 

Aber es kann nicht Thread in System.Threading Namespace finden.

Was ist los? Ist nicht Thread für Mac verfügbar, oder fehlt mir etwas?

+4

Meh, halte nicht den Atem an. Dies wurde lange bevor CoreFx gestartet wurde fallengelassen. Task.Delay() ist der Weg nach vorne, es ist der richtige Weg ™ –

+0

@HansPassant Sie haben Recht. BTW, es ist Mehran;) – mehrandvd

Antwort

6

Ist das nicht Thread für Mac verfügbar?

Noch nicht: https://github.com/dotnet/corefx/issues/2576

Die aktuelle System.Threading.Thread (und System.Threading.ThreadPool) nur, Desktop und CoreCLR unterstützen.

und: https://github.com/dotnet/corefx/issues/2576#issuecomment-187184341

Ich kann sehen, dass das neueste System.Threading.Thread Paket in dem Dotnet-Core NuGet Feed hat dieses Bild nicht verändert.

+0

Lesen Sie das Problem2576 wird es in RC2 verfügbar sein, und RC2 wird erwartet, bald zu versenden – Eldho

+0

@Eldho Daher, warum ich sagte "noch nicht" :) –

+0

Ja, nur die Bestätigung – Eldho

11

Haben Sie System.Threading.Thread Paket zu Ihrem project.json hinzugefügt?

{ 
    "version": "1.0.0-*", 
    "compilationOptions": { 
     "emitEntryPoint": true 
    }, 

    "dependencies": { 
     "NETStandard.Library": "1.0.0-rc2-23811", 
     "System.Threading.Thread": "4.0.0-beta-23516" 
    }, 

    "frameworks": { 
     "dnxcore50": { } 
    } 
} 

Dann kann ich Thread.Sleep:

using System; 
using System.Threading; 


    namespace ConsoleApplication 
    { 
     public class Program 
     { 
      public static void Main(string[] args) 
      { 
       Console.WriteLine(DateTime.Now); 
       Thread.Sleep(2000); 
       Console.WriteLine("Hello World!"); 
       Console.WriteLine(DateTime.Now); 
      } 
     } 
    } 

enter image description here