2012-04-28 26 views
8

xnaを使用しているxbox360を対象とするF#コードは、プロジェクトを移植可能なクラスライブラリに変換してもコンパイルされません。移植可能なクラスライブラリにスレッドを作成するには?

let thread = Thread(fun() -> 
    setAffinity() 

スレッドは赤い波線を取得し、エラーメッセージが

エラー1は、このタイプは、私は、オブジェクトエクスプローラでmscorlibを見れば、案の定全くアクセス可能なオブジェクトのコンストラクタ

を持っていないと言います型にはコンストラクタがありません。 しかし、MSDNによると、コンストラクタはxboxとPCLに存在します。

編集:C#PCLで試したところ、同じエラーが発生しました。

答えて

7

スレッドを作成することはできません。あなたのリンクは間違っている、それはPCLについて話していない。

これはポータブルクラスライブラリを使用するコストです。これは、少なくとも1つのターゲットでサポートされていないものすべてを差し引いたものです。どちらがあまり残っていない、PCLは非常に小さいです。最大のハングアップは、実際にサポートされているとは言わないターゲットですが、WinRT(別名メトロ)です。それには厳しく制限されたAPIがあります。

代わりにThreadPool.QueueUserWorkItem()を検討してください。私はTaskがPCLでいつかサポートされると思っています。これは現在進行中の作業です。

+0

リンクは「サポート対象:ポータブルクラスライブラリ」の末尾にあります。 'QueueUserWorkItem()'についての提案をありがとうございますが、これは私のケースでは選択肢ではありません。スレッドが実行されているコアを制御したいので、スレッドプールは低レイテンシのゲームに必要なものを提供するのではないでしょうか。 – Joh

+0

ああ、はい、それはドキュメントのバグです。 MSDNの記事に注釈を付けることはできません.David Keanはそのタグに注目していますので、うまくいけばそれを見ることができます。 –

+0

新しいスレッドを作成するのに「移植性がない」とは何ですか? たとえば、.netとWindows Phoneの間でコードを共有する場合は、 – Grigory

1

これはglibではありませんが、これはバグのように聞こえるので、私はどのように進めますか。マイクロソフトドットコムのfsbugsに送信

+0

'.NETのバグ、唯一のF#のバグに対処していないfsbugs'(など名前が暗示する)。 –

+0

F#でPCLを正しく作成することが問題のように聞こえたので、私はその提案をしました。 –

+0

私はC#プロジェクトを試してみたところ、同じエラーが出ました。私は私の質問からF#タグを削除しました。混乱させて申し訳ありません。 – Joh

関連する問題