2016-04-12 27 views
9

Tôi đang làm việc với .NET Core trên máy Mac của mình.Thread.Sleep() trong .NET Core trên Mac

Một nơi nào đó trong mã của tôi, tôi muốn sử dụng mã này:

System.Threading.Thread.Sleep(100); 

Nhưng nó không thể tìm thấy Thread trong System.Threading namespace.

Có vấn đề gì? Không phải là Thread có sẵn cho Mac hay tôi đang thiếu thứ gì đó?

+4

Meh, đừng nín thở vì điều đó. Điều này đã giảm xuống rất lâu trước khi CoreFx được bắt đầu. Task.Delay() là con đường phía trước, đó là Right Way ™ –

+0

@ HansPassant Bạn nói đúng. BTW, đó là Mehran;) – mehrandvd

Trả lời

6

Không phải là Thread có sẵn cho Mac?

Chưa: https://github.com/dotnet/corefx/issues/2576

Các System.Threading.Thread hiện tại (và System.Threading.ThreadPool) gói chỉ hỗ trợ máy tính để bàn và CoreCLR.

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

Tôi có thể thấy rằng gói System.Threading.Thread mới nhất trong thức ăn chăn nuôi NuGet DotNet-core đã không thay đổi hình ảnh này.

+0

Đọc vấn đề2576 nó sẽ có sẵn trong rc2, và rc2 sẽ được phát hành sớm – Eldho

+0

@Eldho Do đó tại sao tôi nói "chưa" :) –

+0

Có, chỉ cần xác nhận nó – Eldho

11

Bạn có gói System.Threading.Thread được thêm vào project.json của mình không?

{ 
    "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": { } 
    } 
} 

Sau đó, tôi có thể sử dụng 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