問題タブ [managed]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1093 参照

c# - マネージド/アンマネージド .net コードとは何ですか? また、どのような違いがありますか?

このあたりでは、マネージドおよびアンマネージドという用語がかなり使われています。オンラインで検索すると、それらが何であるかについてのあいまいな概念を得ることができますが、本当に知っておく必要があるのは、それが C# デスクトップ アプリの開発者である私にどのように影響するかということです。どの時点で何を扱っているかを知るにはどうすればよいですか? また、そのコードへのアプローチがどのように変わるのでしょうか?

複製

C# のマネージ/アンマネージ コードとは?

0 投票する
3 に答える
3733 参照

c# - マネージ言語のジュディ配列

Judy 配列は、スパース配列または値のセットを表す高速なデータ構造です。C# などのマネージ言語の実装はありますか? ありがとう

0 投票する
2 に答える
270 参照

unmanaged - 混合C++.NETアプリでマネージドまたはアンマネージドを強調しますか?

私が使用しているアプリは、2003年頃にほぼ完全にVisual C ++で記述されたWinFormsアプリです。UI構築フレームワークのため、現場に到着する前に.NETが選択されましたが、コードの大部分は管理されていない土地で開発されました。 。その一部は絶対に必要でした。非常に大きなデータセットに対してリアルタイムの画像処理を行い、画像バッファへのポインタを必要とするIntel画像処理ライブラリを使用します。実際、パフォーマンス1%未満の場合です。それは重要です。

アプリ自体は、UIコードをいくつかの静的ライブラリにリンクすることによって形成された大きな実行可能ファイルでした。各静的ライブラリは、データ取得や画像処理などの機能サブシステムに対応しています。参加してから、他のアプリで再利用するマネージラッパーを作成して、これらのサブシステムのいくつかをDLLに分割しましたが、メインアプリは静的にリンクされたライブラリで実質的に構成されています。

私の同僚と私は、さらなる開発が管理されていないことを強調すべきか、管理されていることを強調すべきかについて大きく異なります。私が言及した場合を除いて、アンマネージコードを指示するパフォーマンス要件はありません。私たちは.NETにしっかりと取り組んでいるので、クロスプラットフォームは問題ではありません。私は、別段の指示がない限り、管理を優先すべきだと考えています。

先月、私の同僚はサブシステムを管理する一連のクラスを開発しました。それらをrefクラスとして実装し、いくつかのイベントを.NETインターフェースに追加するのではなく、gcrootを使用して管理対象クライアントへのハンドルを保持し、管理対象外の土地にとどまることができるように、Observerの実装をいくつか作成しました。これは私には間違っているように思えます。なぜあなたが無料で手に入れることができる何かを書くのですか?しかし、私はあまりにも硬直しているのではないかと思います。

何かご意見は?

0 投票する
2 に答える
547 参照

.net - .NET アセンブリが事後的に記述された言語を特定することはできますか?

これは、継承されたすべてのメソッドが再実装されていることを確認するために内部のすべてのクラスをテストできるように、C++/CLI およびマネージド C++ アセンブリを見つける方法として始まりました。これをビルド プロセスのステップとして追加し、二度と起こらないようにしたいと思います。

この問題について考えると、使用されている .NET 言語を特定できると興味深いので、少し興味がわきました。このため、もう少し踏み込んで、すべての .NET 言語のアセンブリを比較しました。これまでのところ、リフレクションを介して .NET アセンブリの任意のセットからの型と属性データを比較する、私が作成した小さなプログラムを通じて見つけたものは次のとおりです。

  • C# - AssemblyConfigurationAttribute あり、GuidAttribute あり
  • VB - 多くの追加の「My」タイプ (例: MyApplication、MySettings) があり、GuidAttibute があります
  • F# - 使用されるコンパイラのバージョンも指定する FSharpInterfaceDataVersionAttribute があります。
  • C++ (/clr:safe を除くすべて) - 追加の型が多数あります (FrameInfo、type_info)
  • C++ /clr:safe - 固有のリフレクション機能がないようです。

次の順序で解析するのが合理的かもしれません。

  1. FSharpInterfaceDataVersionAttribute があれば F# です
  2. 私が見つけた余分な型の膨大なセットに含まれている場合、それは C++ です。
  3. 「My*」タイプがあれば VB です。
  4. AssemblyConfigurationAttribute または GuidAttribute がある場合は C# です。
  5. C++ /clr:Safe である可能性が高い

ただし、これは恐ろしいハッキングであるため、ここでチェックインして、利用可能な別のオプションがないことを確認したいと思いました.

0 投票する
2 に答える
2833 参照

multithreading - Windbg スタック トレースの問題

マネージ コードのクラッシュ ダンプをデバッグしています。ここで !threads を使用してすべてのスレッドを表示すると、いくつかのスレッドにさまざまな例外を含む Exception フィールド値があります。

私の質問は、どの例外がプロセスのクラッシュを引き起こすルート例外であるかをすばやく特定する方法です。非常に多くのスレッドが例外値に関連付けられている理由 - プロセスのクラッシュを引き起こすスレッド (未処理の例外を含む) は 1 つだけである必要があると思いますが、非常に多くのスレッドが例外を示すのはなぜですか? :-)

前もって感謝します、ジョージ

!threads の一部の出力例を次に示します。FooException と GooException は、私のアプリケーションで定義された例外の種類です。

48 f 14c4 000000001d8bc4a0 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093365da0) 49 10 17e8 000000001acc26d0 200b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093364670) 50 11 135c 000000001acc3180 200b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (00000000dd707f70) 51 12 1740 000000001aca2ec0 200b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (00000000937e8a60) 52 13 814 000000001aca3970 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA GooException (000000009336c550) 53 14 6ac 000000001accb010 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093355f58) 54 15 1114 000000001accbac0 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA 56 16 d44 000000001accc570 200b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA GooException (00000000933c0598) 58 17 ff4 000000001accd020 200b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException ( 00000000a8a39c48) 59 18 780 000000001accdad0 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA 60 19 8fc 000000001acce580 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (00000000abd5ff08) 61 1a 2e8 000000001accf030 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (00000000ac163ea0) 62 1b 11e8 000000001d8bd010 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093367c78) 63 1c 1520 000000001d8bd5e0 200b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA 64 1d 1330 000000001d8be090 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException ( 00000000937d9540) 65 1e 7f8 000000001d8beb40 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (000000009339a038) 66 1f a70 000000001d8bf5f0 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (00000000937d8b88) 67 20 150 000000001d8c00a0 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA 68 21 1628 000000001d8c0b50 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093355200) 69 22 1148 000000001d8c1600 200b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA GooException (000000009380ada8) 70 23 16a8 000000001d8c20b0 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException ( 0000000093365178) 71 24 1640 000000001d8c2b60 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093343a78) 72 25 1568 000000001d8c3610 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (000000009380cc08)0000000000000000 0000000000162080 0 MTA FooException (0000000093355200) 69 22 1148 000000001d8c1600 200b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA GooException (000000009380ada8) 70 23 16a8 000000001d8c20b0 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093365178) 71 24 1640 000000001d8c2b60 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093343a78) 72 25 1568 000000001d8c3610 b020 有効 000000000000000:000000000000000 0000000000162080 0 MTA FooException (0000000809) 80000000000000000 0000000000162080 0 MTA FooException (0000000093355200) 69 22 1148 000000001d8c1600 200b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA GooException (000000009380ada8) 70 23 16a8 000000001d8c20b0 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093365178) 71 24 1640 000000001d8c2b60 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093343a78) 72 25 1568 000000001d8c3610 b020 有効 000000000000000:000000000000000 0000000000162080 0 MTA FooException (0000000809) 80000000000000000 0000000000162080 0 MTA GooException (000000009380ada8) 70 23 16a8 000000001d8c20b0 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093365178) 71 24 1640 000000001d8c2b60 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093343a78) 72 25 1568 000000001d8c3610 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (000000009380cc08)0000000000000000 0000000000162080 0 MTA GooException (000000009380ada8) 70 23 16a8 000000001d8c20b0 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093365178) 71 24 1640 000000001d8c2b60 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (0000000093343a78) 72 25 1568 000000001d8c3610 b020 Enabled 0000000000000000:0000000000000000 0000000000162080 0 MTA FooException (000000009380cc08)0000000000000000000000000000162080 0 MTA FOOEXCEPTION(0000009343A78)72 25 1568 00000000000000000000000000000000:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000162080 0 MTA FOOEXCEPTION(0000009343A78)72 25 1568 00000000000000000000000000000000:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0 投票する
3 に答える
1320 参照

c# - C# からアンマネージ C++ 関数を取得する

信頼できるANSI標準Cコードがいくつかあります。つまり、ソースを持っていても、別の言語に翻訳したり、呼び出し引数を変更したりすることはできません。これらのアクションは権限を無効にするためです。150以上の機能があります。

ファイル名を .C から .CPP に変更して、Visual Studio 2009 の C++ コンパイラを使用してコンパイルできるようにするなど、付随的な変更を加えることができます。コンパイラ指令などを追加することもできます。必要に応じて、ラッパー レイヤーを通過することもできます。

もう 1 つの制限は、 C# コードでunsafeキーワードを使用することを会社が望んでいないことです。

これらの関数を C# プログラムから取得する必要があります。

典型的な C/C++ 関数は次のようになります。
double SomeFunction(double a, double[3] vec, double[3][3] mat);
配列の内容が入力される場合と出力される場合があり、両方である場合はほとんどありません。

最初にアンマネージ DLL を作成してみました (Extern C とマークされた関数を使用)。単純な引数 (int、double) のみを持つ関数は正常に機能しましたが、配列をマーシャリングする方法を特定できませんでした。(実際、いくつかのサンプル コードを見つけましたが、150 回複製するのは非常に複雑で無理でした。)

次に、同じソリューション内で 2 つのプロジェクトを試しました。1 つは C++ で、もう 1 つは C# です。C++ プロジェクトで、アンマネージとしてマークされた元の関数を呼び出すマネージ関数を作成しました。これは非常にクリーンで単純であり、単純な引数も問題なく機能しました。しかし、配列の場合、C# と C++ の境界を越えて引数の型を一致させる方法を見つけることができませんでした
Argument '2': cannot convert from 'double[]' to 'double*'
(また、前述のように、unsafe を使用してポインターを取得することはできません)。

確かに、私がやろうとしていることは可能でなければなりません。
これらの機能を取得するための最良の方法は何ですか?
(上記の関数を使用したサンプル コードは非常に優れています。)

0 投票する
4 に答える
482 参照

c# - 管理されていない .NET の割合はどれくらいですか?

Reflector を使用していると、多くの安全でないコードに遭遇することがよくあります。管理されていない/安全な.NETの割合を知っている人はいますか?

0 投票する
4 に答える
2612 参照

c# - .NET アプリがコンピューターをフリーズさせる原因は何ですか?

これはおそらく標準的な「場合によります...」という質問であることは知っていますが、どこから始めればよいかについての指針をいただければ幸いです。

イーサネット経由で通信するクライアント/サーバー アプリがあります。あるコンピューターではサーバーとクライアントを実行し、別のコンピューターではクライアントだけを実行します。1 つは Vista を実行し、もう 1 つは XP を実行します。約 3 週間のアップタイムの後、コンピューター全体がフリーズし、何も機能せず、マウスもキーボードも何も機能せず、電源をオフにするだけです。サーバーは 10 秒ごとに ping メッセージを送信して、クライアントが生きているかどうかを確認します。

自分が原因なのか、それとも他に原因があるのか​​調べてみました。セッションを開始して数日後、メモリ使用量の異常な増加をチェックしようと思いましたが、それ以上のアイデアはほとんどありません。

0 投票する
2 に答える
1132 参照

sql-server-2005 - dbo スキーマ名を強制する方法は?

VS 2008 で「SQL SERVER PROJECT」を使用して C# で UDF を作成しています。次に、DEPLOY コマンドを使用して DLL を MS SQL Server 2005 に公開しています。

作成されたすべてのUDFが(ユーザーとして)所有されていることを除いて、すべてうまく機能しますが、dboスキーマを保持したかった(例:dbo.UDF_TEST - jonny.UDF_TESTではありません)

タールを管理する方法はありますか?