如何从kernel32导入Sleep函数?

时间:2015-12-24 08:08:29

标签: c# .net dllimport

我必须从我的Windows窗体应用程序导入kernel32.dll才能使用Sleep功能。 在VB.net中,我使用以下代码。

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

如何在c#中转换它?

3 个答案:

答案 0 :(得分:5)

如果您愿意,可以在kernel32中调用/调用该函数,如其他答案所示。但是,这样做几乎肯定是错误的。从您的Declare声明的形式来看,我认为您的代码会在.net之前发布。

在.net中,您应该致电Thread.Sleep。平台提供所需功能的地方使用它。文档说:

  

此方法从Windows系统API调用Sleep函数。

它总是更清洁,更适合使用平台。只有在没有平台提供的方式来实现功能时才使用p / invoke。

答案 1 :(得分:2)

您可以看到PInvoke

的文档
[DllImport("kernel32.dll")]
static extern void Sleep(uint dwMilliseconds);

// code added by g. sharp @ http://www.paradisim.net
public class MainApp
{
    [STAThread]
    public static void Main()
    {
        Sleep(U2000);  // pause for two seconds
        System.Threading.Thread.Sleep(2000); // does the same thing
    }
}

答案 2 :(得分:1)

Using System.Runtime.InteropServices;  

....

public class NativeMethods
{

    [DllImport("kernel32")]
    public static extern void Sleep(uint dwMilliseconds);
}