none
タイマー関連の質問です。 RRS feed

  • 質問

  • timeBeginPeriodと言う関数が、c++にはあり、それで、マシンのタイマの精度をコントロール出来るみたいです。

    これと同じ関数はc#には無いのでしょうか?

    自分が見た限りではどうやら無いみたいなのです。

    現状では、タイマの精度が最低10ミリセカンドしかなく、一フレーム16.666、、、ミリ秒になるゲームのフレーム管理をするには、精度が荒過ぎます。

    自分としては1ミリセカンド単位のタイマーがやはり、欲しいところです。

    mdxでも3dのmdxならば、内部で自動的にtimeBeginPeriodを呼んでタイマー精度を勝手に高めてくれるらしいのですが2dのmdxでは、こう言う機能はどうやら無いようです。

    これは、諦めるしかないのでしょうか?それとも、dllインポートとか言う荒業で、c++を使ってc++の関数を使用するとか言う方法しかないのでしょうか?

    自分のマシンには現状c#しかないので、やはり、諦めるしかないのでしょうか?

    詳しい方いらしましたらお教え下さい。

    2007年1月24日 15:47

すべての返信

  •  ブル さんからの引用

    これと同じ関数はc#には無いのでしょうか?

    無いです。

     ブル さんからの引用

    それとも、dllインポートとか言う荒業で、c++を使ってc++の関数を使用するとか言う方法しかないのでしょうか?

    P/Invoke は .NET Framework の正式な機能だし、スタンドアロンアプリケーションでは特に使用が制限されているわけでもないので、別に荒業ってことはありません。
    本当に必要なら存分に使ってください。

     

    2007年1月25日 2:34
    モデレータ
  • ありがとうございます。

    結論から言えば、c#だけでは無理であり、諦めるしかないと言うことですね。

    解りました。

    2007年1月25日 3:30
  • すいません、ついでにもう一つお願いします。

    DllImportと、P/invokeは同じものなのでしょうか?それとも全く違うものなのでしょうか?

    自分の開発環境のヘルプを幾ら検索しても良く解りません。

     

    2007年1月25日 4:13
  • 件名と質問内容が違うくなりますので新たにスレッドを作成されたほうが良いと思いますよ。

     ブル さんからの引用
    DllImportと、P/invokeは同じものなのでしょうか?それとも全く違うものなのでしょうか?

    自分の開発環境のヘルプを幾ら検索しても良く解りません。

    プラットフォーム呼び出しの詳細

    こちらは参照されましたでしょうか。

    簡単に説明すると

      P/Invoke は、アンマネージ DLL の関数を呼び出し仕組みのこと

      DllImportAttribute は アンマネージ DLL の関数のを探すための情報を提供すること

    用は P/Invoke するために、DllImportAttribute を使用して呼び出す関数の情報を取得しているということですね。

    私も詳しく仕組みを理解していませんが、だいたいこんな感じだと思います。

    2007年1月25日 13:13
  • 遅れましたが、ありがとうございます。

    色々と勉強してみます。

    2007年1月27日 3:32