diff --git a/docs/csharp/programming-guide/concepts/async/index.md b/docs/csharp/programming-guide/concepts/async/index.md index d9e85346843..8160568c204 100644 --- a/docs/csharp/programming-guide/concepts/async/index.md +++ b/docs/csharp/programming-guide/concepts/async/index.md @@ -9,11 +9,11 @@ ms.assetid: 9bcf896a-5826-4189-8c1a-3e35fa08243a caps.latest.revision: author: BillWagner ms.author: wiwagn -ms.openlocfilehash: b845bf6f31ef84c78dcfd84832036ca2f2c4cae4 -ms.sourcegitcommit: cec0525b2121c36198379525e69aa5388266db5b +ms.openlocfilehash: 6822143df2d02c284d7506d180139c18cfbaf370 +ms.sourcegitcommit: 655fd4f78741967f80c409cef98347fdcf77857d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 02/23/2018 +ms.lasthandoff: 02/28/2018 --- # Async および Await を使用した非同期プログラミング (C#) パフォーマンスのボトルネックを回避しアプリケーション全体の応答性を向上させるために、非同期プログラミングを使用できます。 ただ、非同期アプリケーションを作成する従来の方法は複雑で、プログラムの作成、デバッグ、保守が困難な場合があります。 @@ -41,7 +41,7 @@ ms.lasthandoff: 02/23/2018 非同期ベースの方法は、非同期操作を設計する場合に選択できるオプションの一覧に、自動送信に相当するものを追加します。 つまり、開発者の少しの作業量で、従来の非同期プログラミングのすべての利点を取得できます。 ## 非同期メソッドの作成の簡素化 - C# の [async](../../../../csharp/language-reference/keywords/async.md) キーワードと [await](../../../../csharp/language-reference/keywords/await.md) キーワードは、非同期プログラミングの中核です。 これら 2 つのキーワードを使用すると、同期メソッドの作成とほぼ同様の容易さで、.NET Framework、.NET Core または Windows ランタイムのリソースを使用して非同期メソッドを作成できます。 `async` および `await` を使用して定義する非同期メソッドは、*async メソッド*と呼ばれます。 + C# の [async](../../../../csharp/language-reference/keywords/async.md) キーワードと [await](../../../../csharp/language-reference/keywords/await.md) キーワードは、非同期プログラミングの中核です。 これら 2 つのキーワードを使用すると、同期メソッドの作成とほぼ同様の容易さで、.NET Framework、.NET Core または Windows ランタイムのリソースを使用して非同期メソッドを作成できます。 `async` キーワードを使用して定義する非同期メソッドは、"*async メソッド*" として参照されます。 async メソッドの例を次に示します。 コードのほとんどは、見たことのあるものと思います。 コメントは、非同期性を作成するために追加した機能を明示しています。 @@ -92,21 +92,21 @@ string urlContents = await client.GetStringAsync(); - 戻り値の型は次のいずれかになります: - - メソッドが、オペランドに TResult 型を持つステートメントを戻す場合、。 + - メソッドが、オペランドに `TResult` 型を持つステートメントを戻す場合、。 - メソッドがステートメントを戻さない、またはオペランドを持たないステートメントを戻す場合、。 - - 非同期のイベント ハンドラーを作成する場合、`Void`。 + - 非同期のイベント ハンドラーを作成する場合、`void`。 - `GetAwaiter` メソッドがあるその他の任意の型 (C# 7 以降)。 - 詳細については、このトピックで後述する「戻り値の型およびパラメーター」を参照してください。 + 詳細については、「[戻り値の型およびパラメーター](#BKMK_ReturnTypesandParameters)」セクションを参照してください。 - メソッドには、通常は 1 つ以上の await 式があり、待機中の非同期操作が完了するまでメソッドを続行できないポイントをマークします。 この間メソッドは中断し、メソッドの呼び出し元にコントロールを戻します。 このトピックの次のセクションでは、中断ポイントで何が発生するかを説明します。 非同期のメソッドでは、指定のキーワードと型を使用して何を実行するかを示すと、コンパイラがその作業を引き継ぎます。作業には、中断されたメソッドの待機ポイントにコントロールが戻された場合に実行される作業を、継続的に追跡することも含まれます。 ループおよび例外処理など一部のルーチンのプロセスは、従来の非同期コードによる操作が困難な場合があります。 非同期のメソッドでは、同期ソリューションの場合と同様にこれらの要素を記述すると、問題が解決します。 - .NET Framework の以前のバージョンでの非同期性の詳細については、「[TPL と従来の .NET Framework 非同期プログラミング](http://msdn.microsoft.com/library/e7b31170-a156-433f-9f26-b1fc7cd1776f)」を参照してください。 + .NET Framework の以前のバージョンでの非同期性の詳細については、「[TPL と従来の .NET Framework 非同期プログラミング](../../../../standard/parallel-programming/tpl-and-traditional-async-programming.md)」を参照してください。 ## 非同期メソッドでの動作 非同期プログラミングでは理解が必要な最も重要なことは、コントロール フローがどのようにメソッドからのメソッドに移動するかということです。 次の図は、このプロセスについて説明します。 @@ -132,7 +132,7 @@ string urlContents = await client.GetStringAsync(); そのため、`AccessTheWebAsync` は await 演算子を使用してその進行を中断し、`AccessTheWebAsync` を呼び出したメソッドにコントロールを戻します。 `AccessTheWebAsync` は呼び出し元に `Task` を返します。 タスクは、ダウンロードされた文字列の長さの整数値を生成することの保証を表します。 > [!NOTE] - > `GetStringAsync` (および、結果として `getStringTask`) が `AccessTheWebAsync` が待機する前に完了した場合、コントロールは `AccessTheWebAsync` に残ります。 `AccessTheWebAsync` を中断して後から戻ることは、呼び出された非同期プロセス (`getStringTask`) が既に完了していて、AccessTheWebSync が最終結果を待つ必要がない場合に、無駄になることがあります。 + > `GetStringAsync` (および、結果として `getStringTask`) が `AccessTheWebAsync` が待機する前に完了した場合、コントロールは `AccessTheWebAsync` に残ります。 `AccessTheWebAsync` を中断して後から戻ることは、呼び出された非同期プロセス (`getStringTask`) が既に完了していて、`AccessTheWebSync` が最終結果を待つ必要がない場合に、無駄になることがあります。 呼び出し元 (この例ではイベント ハンドラー) の内部で、処理パターンが続行されます。 呼び出し元は `AccessTheWebAsync` からの結果に依存しない他の作業をすることもあり、または直ちに待機状態になることもあります。 イベント ハンドラーは `AccessTheWebAsync` を待機し、`AccessTheWebAsync` は、`GetStringAsync` を待機します。 @@ -146,7 +146,7 @@ string urlContents = await client.GetStringAsync(); ## API の非同期メソッド 非同期のプログラミングをサポートする `GetStringAsync` などのメソッドがどこにあるのかということです。 .NET Framework 4.5 以降および .NET Core には、`async` および `await` で使用する多くのメンバーが含まれています。 メンバー名に付記されている "Async" というサフィックスと、その戻り値の型である または から識別できます。 たとえば、`System.IO.Stream` のクラスには、同期メソッドの 、および と共に、 および という同期メソッドが含まれています。 - Windows ランタイムにも、Windows アプリの `async` と `await` で使用できる多くのメソッドが含まれています。 詳細およびサンプル メソッドについては、「[クイック スタート: await 演算子を使用した非同期プログラミング](/previous-versions/windows/apps/hh452713(v=win.10))」、「[非同期プログラミング (Windows ストア アプリ)](/previous-versions/windows/apps/hh464924(v=win.10))」、および「[WhenAny: .NET Framework と Windows ランタイム間のブリッジ](https://msdn.microsoft.com/library/jj635140(v=vs.120).aspx)」を参照してください。 + Windows ランタイムにも、Windows アプリの `async` と `await` で使用できる多くのメソッドが含まれています。 UWP 開発の詳細については、「[スレッド化と非同期プログラミング](/windows/uwp/threading-async/)」を参照してください。旧バージョンの Windows ランタイムを使用する場合は、「[非同期プログラミング (Windows ストア アプリ)](/previous-versions/windows/apps/hh464924(v=win.10))」および「[クイック スタート: await 演算子を使用した非同期プログラミング](/previous-versions/windows/apps/hh452713(v=win.10))」を参照してください。 ## スレッド 非同期のメソッドは非ブロッキング操作を意図しています。 非同期のメソッドの `await` 式は、待機中のタスクの実行中に現在のスレッドをブロックしません。 代わりに、式はメソッドの残りの部分の継続を登録し、非同期のメソッドの呼び出し元にコントロールを戻します。 @@ -158,7 +158,7 @@ string urlContents = await client.GetStringAsync(); ## async と await [async](../../../../csharp/language-reference/keywords/async.md) 修飾子を使用して、メソッドが非同期メソッドであることを指定すると、次の 2 つの機能が有効になります。 -- マークされた非同期のメソッドは中断ポイントを示すために [await](../../../../csharp/language-reference/keywords/await.md) を使用できます。 await 演算子は、非同期のメソッドが、待機中の非同期のプロセスが完了するまでこのポイント以降を続行できないことを、コンパイラに指示します。 その間、コントロールは非同期のメソッドの呼び出し元に戻されます。 +- マークされた非同期のメソッドは中断ポイントを示すために [await](../../../../csharp/language-reference/keywords/await.md) を使用できます。 `await` 演算子は、非同期のメソッドが、待機中の非同期のプロセスが完了するまでこのポイント以降を続行できないことを、コンパイラに指示します。 その間、コントロールは非同期のメソッドの呼び出し元に戻されます。 非同期のメソッドの `await` 式での中断は、メソッドからの終了を意図するものではなく、`finally` ブロックは実行されません。 @@ -232,8 +232,7 @@ Windows ランタイム プログラミングの非同期 API には、タスク - - - - 詳細およびサンプルついては、「[クイック スタート: 非同期プログラミングに await 演算子を使用する](/previous-versions/windows/apps/hh452713(v=win.10))」を参照してください。 + ## 名前付け規則 慣例により、`async` 修飾子を持つメソッドの名前には、"Async" を追加します。 @@ -340,6 +339,8 @@ namespace AsyncFirstExample // Length of the downloaded string: 41564. ``` -## 参照 +## 関連項目 [async](../../../../csharp/language-reference/keywords/async.md) - [await](../../../../csharp/language-reference/keywords/await.md) + [await](../../../../csharp/language-reference/keywords/await.md) + [非同期プログラミング](../../../../csharp/async.md) + [非同期の概要](../../../../standard/async.md) diff --git a/docs/csharp/programming-guide/strings/index.md b/docs/csharp/programming-guide/strings/index.md index e05f0a3b5e0..4d52213de7f 100644 --- a/docs/csharp/programming-guide/strings/index.md +++ b/docs/csharp/programming-guide/strings/index.md @@ -12,11 +12,11 @@ ms.assetid: 21580405-cb25-4541-89d5-037846a38b07 caps.latest.revision: author: BillWagner ms.author: wiwagn -ms.openlocfilehash: 24a030bb43d49615a7487ce10ad2347fdfd8a290 -ms.sourcegitcommit: 96cc82cac4650adfb65ba351506d8a8fbcd17b5c +ms.openlocfilehash: 6492edae6e4311252dc664236fb43cd373f7c59f +ms.sourcegitcommit: 655fd4f78741967f80c409cef98347fdcf77857d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 02/19/2018 +ms.lasthandoff: 02/28/2018 --- # 文字列 (C# プログラミング ガイド) 文字列は、値がテキストの 型のオブジェクトです。 内部では、テキストは オブジェクトの順次読み取り専用コレクションとして格納されます。 C# の文字列の末尾には null 終端文字はありません。したがって、C# の文字列には任意の数の null 文字 ('\0') を埋め込むことができます。 文字列の プロパティは、Unicode 文字の数ではなく、文字列に含まれている `Char` オブジェクトの数を表します。 文字列内の個別の Unicode コード ポイントにアクセスするには、 オブジェクトを使用します。 @@ -83,7 +83,7 @@ ms.lasthandoff: 02/19/2018 メソッドのオーバーロードは、パラメーターとして書式指定文字列を受け取ります。 したがって、メソッドを明示的に呼び出さずに書式指定リテラル文字列を埋め込むことができます。 ただし、Visual Studio の **[出力]** ウィンドウにデバッグ出力を表示するために メソッドを使用する場合、 は書式文字列ではなく、文字列のみを受け入れるので、明示的に メソッドを呼び出す必要があります。 書式指定文字列の詳細については、「[型の書式設定](../../../standard/base-types/formatting-types.md)」を参照してください。 ## 部分文字列 - 部分文字列は、1 つの文字列に含まれる一連の文字です。 元の文字列の一部から新しい文字列を作成するには、 メソッドを使用します。 メソッドを使用して、1 つまたは複数の部分文字列を検索できます。 指定されたすべての部分文字列を新しい文字列に置換するには、 メソッドを使用します。 メソッドと同様に、 は実際に新しい文字列を返し、元の文字列は変更しません。 詳細については、「[方法: String のメソッドを使用して文字列を検索する](../../../csharp/programming-guide/strings/how-to-search-strings-using-string-methods.md)」および「[方法: 文字列の内容を変更する](../../../csharp/programming-guide/strings/how-to-modify-string-contents.md)」を参照してください。 + 部分文字列は、1 つの文字列に含まれる一連の文字です。 元の文字列の一部から新しい文字列を作成するには、 メソッドを使用します。 メソッドを使用して、1 つまたは複数の部分文字列を検索できます。 指定されたすべての部分文字列を新しい文字列に置換するには、 メソッドを使用します。 メソッドと同様に、 は実際に新しい文字列を返し、元の文字列は変更しません。 詳細については、「[How to: search strings](../../how-to/search-strings.md)」(方法: 文字列を検索する) および「[方法 : 文字列の内容を変更する](../../../csharp/programming-guide/strings/how-to-modify-string-contents.md)」を参照してください。 [!code-csharp[csProgGuideStrings#7](../../../csharp/programming-guide/strings/codesnippet/CSharp/index_7.cs)] @@ -127,8 +127,7 @@ string s = String.Empty; |[方法: 複数の文字列を連結する](../../../csharp/programming-guide/strings/how-to-concatenate-multiple-strings.md)|`+` 演算子と `Stringbuilder` クラスを使用して、コンパイル時および実行時に文字列を結合する方法について説明します。| |[方法: 文字列を比較する](../../../csharp/programming-guide/strings/how-to-compare-strings.md)|文字列の序数比較を実行する方法を示します。| |[方法: String.Split を使用して文字列を解析する](../../how-to/parse-strings-using-split.md)|`String.Split` メソッドを使用して文字列を解析するコード例を紹介します。| -|[方法: String のメソッドを使用して文字列を検索する](../../../csharp/programming-guide/strings/how-to-search-strings-using-string-methods.md)|特定のメソッドを使用して文字列を検索する方法について説明します。| -|[方法: 正規表現を使用して文字列を検索する](../../../csharp/programming-guide/strings/how-to-search-strings-using-regular-expressions.md)|正規表現を使用して文字列を検索する方法について説明します。| +|[方法: 文字列を検索する](../../how-to/search-strings.md)|特定のメソッドを使用して文字列を検索する方法について説明します。| |[方法: 文字列が数値を表しているかどうかを確認する](../../../csharp/programming-guide/strings/how-to-determine-whether-a-string-represents-a-numeric-value.md)|文字列を安全に解析して、有効な数値があるかどうかを確認する方法を示します。| |[方法: 文字列を DateTime に変換する](../../../csharp/programming-guide/strings/how-to-convert-a-string-to-a-datetime.md)|"01/24/2008" などの文字列を、 オブジェクトに変換する方法を示します。| |[基本的な文字列操作](../../../../docs/standard/base-types/basic-string-operations.md)| メソッドおよび メソッドを使用し文字列の基本操作を実行する、トピックへのリンクがあります。| diff --git a/docs/csharp/quick-starts/hello-world.yml b/docs/csharp/quick-starts/hello-world.yml index a91cf8500c4..7e9cea9515b 100644 --- a/docs/csharp/quick-starts/hello-world.yml +++ b/docs/csharp/quick-starts/hello-world.yml @@ -13,11 +13,11 @@ metadata: ms.custom: mvc ms.prod: .net ms.technology: devlang-csharp - ms.openlocfilehash: 7bc970e3c6eb93bf98323bd266b8c6a49f0cc1d0 - ms.sourcegitcommit: d2da0142247ef42a219a5d2907f153e62dc6ea0d + ms.openlocfilehash: b29e927275d674281ee176cc9d550b6c52b050ce + ms.sourcegitcommit: be1fb5d9447ad459bef22b91a91c72e3e0b2d916 ms.translationtype: HT ms.contentlocale: ja-JP - ms.lasthandoff: 02/01/2018 + ms.lasthandoff: 02/09/2018 items: - durationInMinutes: 1 content: "このクイックスタートでは C# を対話形式で学習できます。ブラウザーを使用して C# を記述し、コードをコンパイルして実行した結果を確認します。 このチュートリアルには、\"Hello World\" プログラムを開始する一連のレッスンが含まれています。 これらのレッスンでは、C# 言語の基本を説明します。\n" @@ -32,11 +32,11 @@ items: content: "先ほどの編集を通して、文字列を使って何ができるかを初めて確認しました。 さらに詳しく見てみましょう。\n\n`+` は C# において演算子と呼ばれるものの 1 つです。 `firstString + secondString` のように文字列に適用すると、1 つ目のテキストに 2 つ目のテキストが続く新しいテキストが作成されます。 これを*文字列の連結*と言います。 文字列変数も含めて、文字列をいくつでも連結できます。 これを試してみます。\n\n```csharp\nstring firstFriend = \"Maria\";\nstring secondFriend = \"Sage\";\nConsole.WriteLine($\"My friends are {firstFriend} and {secondFriend}\");\n```\n\n文字列についてさらに詳しく見ていきます。`Length` を使用して文字列の長さを知ることができます。 `Length` は文字列の**プロパティ**であり、その文字列の文字数を返します。 対話型ウィンドウの下部に次のコードを追加します。\n\n```csharp\nConsole.WriteLine($\"The name {firstFriend} has {firstFriend.Length} letters.\");\nConsole.WriteLine($\"The name {secondFriend} has {secondFriend.Length} letters.\");\n```\n\n> [!TIP]\n> このあたりで、自分で試してみるといいでしょう。 `Console.WriteLine()` を使用して画面にテキストを出力できることを学習しました。 変数を宣言して文字列同士を連結する方法についても学習しました。 対話型ウィンドウで実際に確認してみてください。 自分でより多くのメッセージを記述してみるとよいでしょう。 `+` 演算子を使用して文字列を作成してください。\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" - title: "文字列の追加操作" durationInMinutes: 5 - content: "メッセージを出力するのに **メソッド**を使用してきました。 **メソッド**は、何らかのアクションを実装したコードのブロックです。 メソッドに名前があることで、それにアクセスできます。 \n\n`string` 型には多くの便利なメソッドがあります。 メソッドと、それに関連した メソッドを使ってみましょう。 これらのメソッドは、先頭と末尾にあるスペースを削除します。\n\n```csharp\nstring message = \" Hello World! \";\nConsole.WriteLine($\"[{message}]\");\n\nstring trimmedMessage = message.TrimStart();\nConsole.WriteLine($\"[{trimmedMessage}]\");\n\ntrimmedMessage = message.TrimEnd();\nConsole.WriteLine($\"[{trimmedMessage}]\");\n\ntrimmedMessage = message.Trim();\nConsole.WriteLine($\"[{trimmedMessage}]\");\n```\n\nこのサンプルでは、文字列を処理するための重要な概念のいくつかを説明しています。 文字列を操作するメソッドは、定位置に変更を加えるのではなく、新しい文字列オブジェクトを返します。 `Trim` メソッドのいずれかに対する各呼び出しは新しい文字列を返すが元のメッセージを変更しない、ということが確認できます。\n\n文字列を処理するメソッドは他にもあります。 たとえば、エディターやワード プロセッサで検索と置換のコマンドを使用したことがあるかもしれません。 メソッドはそれと似た処理を `string` で行います。 このメソッドは部分文字列を検索し、それを別のテキストに置き換えます。 メソッドは、2 つの**パラメーター**を受け取ります。 パラメーターは丸かっこ内の文字列です。 最初の文字列は、検索対象のテキストです。 2 つ目の文字列は、置換後のテキストです。 ご自分で試してみてください。 このコードを追加します。\n\n```csharp\nstring message = \"Hello World!\";\nConsole.WriteLine(message);\nmessage = message.Replace(\"Hello\", \"Greetings\");\nConsole.WriteLine(message);\n```\n\nその他にも役立つメソッドが 2 つあり、1 つは文字列のすべてを大文字にし、もう 1 つは文字列のすべてを小文字にします。 次のコードを試してみてください。\n\n```csharp\nstring message = \"Hello World!\";\nConsole.WriteLine(message);\nConsole.WriteLine(message.ToUpper());\nConsole.WriteLine(message.ToLower());\n```\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" + content: "メッセージを出力するのに **メソッド**を使用してきました。 **メソッド**は、何らかのアクションを実装したコードのブロックです。 メソッドに名前があることで、それにアクセスできます。 \n\n`string` 型には多くの便利なメソッドがあります。 メソッドと、それに関連した メソッドを使ってみましょう。 これらのメソッドは、先頭と末尾にあるスペースを削除します。\n\n```csharp\nstring greeting = \" Hello World! \";\nConsole.WriteLine($\"[{greeting}]\");\n\nstring trimmedGreeting = greeting.TrimStart();\nConsole.WriteLine($\"[{trimmedGreeting}]\");\n\ntrimmedGreeting = greeting.TrimEnd();\nConsole.WriteLine($\"[{trimmedGreeting}]\");\n\ntrimmedGreeting = greeting.Trim();\nConsole.WriteLine($\"[{trimmedGreeting}]\");\n```\n\nこのサンプルでは、文字列を処理するための重要な概念のいくつかを説明しています。 文字列を操作するメソッドは、定位置に変更を加えるのではなく、新しい文字列オブジェクトを返します。 `Trim` メソッドのいずれかに対する各呼び出しは新しい文字列を返すが元のメッセージを変更しない、ということが確認できます。\n\n文字列を処理するメソッドは他にもあります。 たとえば、エディターやワード プロセッサで検索と置換のコマンドを使用したことがあるかもしれません。 メソッドはそれと似た処理を `string` で行います。 このメソッドは部分文字列を検索し、それを別のテキストに置き換えます。 メソッドは、2 つの**パラメーター**を受け取ります。 パラメーターは丸かっこ内の文字列です。 最初の文字列は、検索対象のテキストです。 2 つ目の文字列は、置換後のテキストです。 ご自分で試してみてください。 このコードを追加します。\n\n```csharp\nstring sayHello = \"Hello World!\";\nConsole.WriteLine(sayHello);\nsayHello = sayHello.Replace(\"Hello\", \"Greetings\");\nConsole.WriteLine(sayHello);\n```\n\nその他にも役立つメソッドが 2 つあり、1 つは文字列のすべてを大文字にし、もう 1 つは文字列のすべてを小文字にします。 次のコードを試してみてください。\n\n```csharp\nConsole.WriteLine(sayHello.ToUpper());\nConsole.WriteLine(sayHello.ToLower());\n```\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" - title: "検索文字列" durationInMinutes: 10 - content: "*検索と置換*の演算子は他にも、文字列内のテキストを検索できます。 検索には メソッドを使用できます。 これにより、文字列内に部分文字列が含まれているかどうかを確認できます。 次のコードを試してみて、 を確認してください。\n\n```csharp\nstring message = \"You say goodbye, and I say hello\";\nConsole.WriteLine(message.Contains(\"goodbye\"));\nConsole.WriteLine(message.Contains(\"greetings\"));\n```\n\n メソッドは**ブール値**を返し、検索した文字列が見つかったかどうかを知らせます。 **ブール値**は `true` か `false` どちらかの値を格納します。 **ブール値**については、この後のレッスンで詳しく学習します。\n\n***課題***\n\n似たような 2 つのメソッドがあり、 も文字列内の部分文字列を検索します。 これらは文字列の先頭または末尾の部分文字列を検索します。 先述のサンプルを変更して、 の代わりに を使用してみてください。 文字列の先頭にある \"You\" または \"goodbye\" を検索します。 文字列の末尾にある \"hello\" または \"goodbye\" を検索します。\n\n> [!Note]\n> 文字列の末尾にあるテキストをテストするときは、句読点に注意します。 文字列が句点で終わる場合は、末尾に句点を含めた文字列を検索する必要があります。\n\n先頭が \"You\" で末尾が \"hello\" の場合は `true`、先頭または末尾が \"goodbye\" の場合は false になります。 \n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" + content: "*検索と置換*の演算子は他にも、文字列内のテキストを検索できます。 検索には メソッドを使用できます。 これにより、文字列内に部分文字列が含まれているかどうかを確認できます。 次のコードを試してみて、 を確認してください。\n\n```csharp\nstring songLyrics = \"You say goodbye, and I say hello\";\nConsole.WriteLine(songLyrics.Contains(\"goodbye\"));\nConsole.WriteLine(songLyrics.Contains(\"greetings\"));\n```\n\n メソッドは**ブール値**を返し、検索した文字列が見つかったかどうかを知らせます。 **ブール値**は `true` か `false` どちらかの値を格納します。 **ブール値**については、この後のレッスンで詳しく学習します。\n\n***課題***\n\n似たような 2 つのメソッドがあり、 も文字列内の部分文字列を検索します。 これらは文字列の先頭または末尾の部分文字列を検索します。 先述のサンプルを変更して、 の代わりに を使用してみてください。 文字列の先頭にある \"You\" または \"goodbye\" を検索します。 文字列の末尾にある \"hello\" または \"goodbye\" を検索します。\n\n> [!Note]\n> 文字列の末尾にあるテキストをテストするときは、句読点に注意します。 文字列が句点で終わる場合は、末尾に句点を含めた文字列を検索する必要があります。\n\n先頭が \"You\" で末尾が \"hello\" の場合は `true`、先頭または末尾が \"goodbye\" の場合は false になります。 \n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" - title: "課題完了" durationInMinutes: 3 - content: "コードは次のようになりましたか?\n\n```csharp\nstring message = \"You say goodbye, and I say hello\";\nConsole.WriteLine(message.StartsWith(\"You\"));\nConsole.WriteLine(message.StartsWith(\"goodbye\"));\n\nConsole.WriteLine(message.EndsWith(\"hello\"));\nConsole.WriteLine(message.EndsWith(\"goodbye\"));\n```\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" + content: "コードは次のようになりましたか?\n\n```csharp\nstring songLyrics = \"You say goodbye, and I say hello\";\nConsole.WriteLine(songLyrics.StartsWith(\"You\"));\nConsole.WriteLine(songLyrics.StartsWith(\"goodbye\"));\n\nConsole.WriteLine(songLyrics.EndsWith(\"hello\"));\nConsole.WriteLine(songLyrics.EndsWith(\"goodbye\"));\n```\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" - content: "\"Hello C#\" クイックスタートはこれで終了です。\n\n`string` 型の機能の詳細については、「[C# プログラミング ガイド](../programming-guide/index.md)」の[文字列](../programming-guide/strings/index.md)に関するトピックで学習できます。\n[文字列のヒント](../how-to/index.md#strings)に関するページを参照してください。\0" diff --git a/docs/csharp/roslyn-sdk/toc.md b/docs/csharp/roslyn-sdk/toc.md index f792912f3a5..9777d3fa3ea 100644 --- a/docs/csharp/roslyn-sdk/toc.md +++ b/docs/csharp/roslyn-sdk/toc.md @@ -4,23 +4,23 @@ ## [セマンティクスの使用](work-with-semantics.md) ## [ワークスペースの使用](work-with-workspace.md) - +## クイック スタート +### [構文の解析](get-started/syntax-analysis.md) +### [セマンティック解析](get-started/semantic-analysis.md) - \ No newline at end of file + are "How To" vs. Samples. --> + \ No newline at end of file diff --git a/docs/standard/analyzers/api-analyzer.md b/docs/standard/analyzers/api-analyzer.md new file mode 100644 index 00000000000..7525f0a8064 --- /dev/null +++ b/docs/standard/analyzers/api-analyzer.md @@ -0,0 +1,117 @@ +--- +title: ".NET API アナライザー" +description: "非推奨の API およびプラットフォームの互換性の問題を検出するのに .NET API アナライザーがどのように役立つかについて説明します。" +author: oliag +ms.author: mairaw +ms.date: 01/30/2018 +ms.topic: article +ms.prod: .net +ms.technology: dotnet-standard +ms.openlocfilehash: 81ab7e32b2af6048d822243226f1054ebd1ca419 +ms.sourcegitcommit: cf22b29db780e532e1090c6e755aa52d28273fa6 +ms.translationtype: HT +ms.contentlocale: ja-JP +ms.lasthandoff: 02/01/2018 +--- +# .NET API アナライザー + +.NET API アナライザーは、さまざまなプラットフォームでの C# API の互換性リスクの可能性および非推奨 API の呼び出しを検出する Roslyn アナライザーです。 開発のすべての段階ですべての C# 開発者に役立ちます。 + +API アナライザーは、NuGet パッケージ [Microsoft.DotNet.Analyzers.Compatibility](https://www.nuget.org/packages/Microsoft.DotNet.Analyzers.Compatibility/) として提供されています。 プロジェクトでこれを参照すると、コードが自動的に監視されて、問題のある API 使用が示されます。 また、電球アイコンをクリックすると、考えられる修正方法の提案を得ることもできます。 ドロップダウン メニューには、警告を抑制するオプションが含まれます。 + +> [!NOTE] +> .NET API アナライザーは、まだプレリリース バージョンです。 + +## 必須コンポーネント + +* Visual Studio 2017 または Visual Studio for Mac (すべてのバージョン)。 + +## 非推奨 API の検出 + +### 非推奨 API とは + +.NET ファミリは大規模な製品のセットであり、より適切に顧客のニーズに対応するため頻繁にアップグレードされています。 当然、API が廃止されたり新しいものに置き換えられたりすることがあります。 より優れた代替 API が存在する API は、非推奨と見なされます。 API が非推奨であり使ってはならないことを通知する手段の 1 つは、 属性で API をマークすることです。 この方法の欠点は、すべての非推奨 API に対して診断 ID が 1 つしかないことです (C# の場合、[CS0612](../../csharp/misc/cs0612.md))。 これによって、次のことが起こります。 +- ケースごとに専用のドキュメントを作成できません。 +- 特定のカテゴリの警告を抑制できません。 すべてを抑制するか、まったく抑制しないかです。 +- 新しい非推奨 API をユーザーに通知するには、参照されているアセンブリまたは対象のパッケージを更新する必要があります。 + +API アナライザーは、DE (Deprecation Error の略) で始まる API 固有のエラー コードを使うので、個々の警告の表示を制御できます。 アナライザーによって識別された非推奨の API は、[dotnet/platform-compat](https://github.com/dotnet/platform-compat) リポジトリで定義されています。 + +### API アナライザーの使用 + +非推奨 API ( など) がコードで使われていると、API アナライザーは緑の波線でそれを強調します。 API 呼び出しをポイントすると、次の例のように、電球アイコンと API の非推奨に関する情報が表示されます。 + +!["緑の波線が表示された WebClient API と左側の電球アイコンのスクリーンショット"](media/api-analyzer/green-squiggle.jpg) + +**[エラー一覧]** ウィンドウには、非推奨の API ごとに一意の ID を含む警告が表示されます。次に示すのは `DE004` の例です。 + +!["警告の ID と説明が表示されている [エラー一覧] ウィンドウのスクリーンショット"](media/api-analyzer/warnings.jpg) + +ID をクリックすると、API が非推奨になった理由に関する詳細情報と、使用できる代替 API に関する提案が表示される Web ページに移動します。 + +強調表示されたメンバーを右クリックして **[\<診断 ID> の非表示]** を選ぶと、警告を抑制できます。 警告を抑制するには 2 つの方法があります。 + +* [ローカル (ソース内)](#suppressing-warnings-locally) +* [グローバル (抑制ファイル内)](#suppressing-warnings-globally) - 推奨 + +### 警告をローカルに抑制する + +警告をローカルに抑制するには、警告を抑制するメンバーを右クリックして、**[クイック アクションとリファクタリング]** > **[\<*診断 ID*> の非表示]** > **[ソース内]** の順に選びます。 [#pragma](../../csharp/language-reference/preprocessor-directives/preprocessor-pragma-warning.md) 警告プリプロセッサ ディレクティブが、定義されているスコープ内のソース コードに追加されます。!["#pragma warning disable で囲まれたコードのスクリーンショット"](media/api-analyzer/suppress-in-source.jpg) + +### 警告をグローバルに抑制する + +警告をグローバルに抑制するには、警告を抑制するメンバーを右クリックして、**[クイック アクションとリファクタリング]** > **[\<*診断 ID*> の非表示]** > **[抑制ファイル内]** の順に選びます。 + +!["緑の波線が表示された WebClient API と左側の電球アイコンのスクリーンショット"](media/api-analyzer/suppress-in-sup-file.jpg) + +最初の抑制後に、*GlobalSuppressions.cs* ファイルがプロジェクトに追加されます。 新しいグローバル抑制は、このファイルに追加されます。 + +!["緑の波線が表示された WebClient API と左側の電球アイコンのスクリーンショット"](media/api-analyzer/suppression-file.jpg) + +グローバル抑制は、プロジェクト間で API 使用の一貫性を確保するのに推奨される方法です。 + +## クロスプラットフォームの問題の検出 + +非推奨 API と同様に、アナライザーはクロスプラットフォームではないすべての API を識別します。 たとえば、 は Windows では動作しますが、Linux や macOS では動作しません。 診断 ID は、**[エラー一覧]** ウィンドウに表示されます。 右クリックして **[クイック アクションとリファクタリング]** を選ぶことで、その警告を抑制することができます。 2 つのオプション (非推奨のメンバーを使い続けて警告を抑制するか、まったく使わない) がある非推奨の場合とは異なり、特定のプラットフォーム用にのみコードを開発している場合は、コードを実行する予定のない他のすべてのプラットフォームですべての警告を抑制できます。 そのために必要なことは、プロジェクト ファイルを編集し、無視するすべてのプラットフォームを列記した `PlatformCompatIgnore` プロパティを追加するだけです。 指定できる値は、`Linux`、`MacOSX`、`Windows` です。 + +```xml + + Linux;MacOS + +``` + +コードが複数のプラットフォームを対象にしていて、一部のプラットフォームでサポートされていない API を利用したい場合は、`if` ステートメントを使ってコードのその部分を保護できます。 + +```csharp +if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) +{ + var w = Console.WindowWidth; + // More code +} +``` + +また、対象のフレームワーク/オペレーティング システムごとに条件付きでコンパイルすることもできますが、現在は[手動で](../frameworks.md#how-to-specify-target-frameworks)行う必要があります。 + +## サポートされている診断 + +現時点では、アナライザーは次のケースを処理します。 + +* (PC001) をスローする .NET Standard API の使用。 +* .NET Framework 4.6.1 (PC002) では利用できない .NET Standard API の使用。 +* UWP (PC003) に存在しないネイティブ API の使用。 +* 非推奨 (DEXXXX) としてマークされている API の使用。 + +## CI マシン + +これらの診断はすべて、IDE で利用できるだけでなく、プロジェクトのビルドの一部としてコマンド ラインでも利用でき、これには CI サーバーが含まれます。 + +## 構成 + +ユーザーは、診断の処理方法を決定します (警告、エラー、提案、オフ)。 たとえば、設計者は、互換性の問題をエラーとして扱い、一部の非推奨 API の呼び出しでは警告を生成し、それ以外については提案を生成するだけにする、といったことを決定できます。 これを、診断 ID 別およびプロジェクト別に構成できます。 そのためには、**ソリューション エクスプローラー**で、プロジェクトの **[依存関係]** ノードに移動します。 ノード **[依存関係]** > **[アナライザー]** > **[Microsoft.DotNet.Analyzers.Compatibility]** を展開します。 診断 ID を右クリックし、**[ルール セットの重要度を設定]** を選んで、目的のオプションを選びます。 + +!["診断とルール セットの重要度のポップアップ ダイアログが表示されているソリューション エクスプローラーのスクリーンショット"](media/api-analyzer/disable-notifications.jpg) + +## 関連項目 + +* 「[Introducing API Analyzer](https://blogs.msdn.microsoft.com/dotnet/2017/10/31/introducing-api-analyzer/)」(API アナライザーの概要) のブログ投稿。 +* YouTube の「[API Analyzer](https://youtu.be/eeBEahYXGd0)」(API アナライザー) デモ ビデオ。 diff --git a/docs/standard/analyzers/index.md b/docs/standard/analyzers/index.md new file mode 100644 index 00000000000..81c61cb9b76 --- /dev/null +++ b/docs/standard/analyzers/index.md @@ -0,0 +1,40 @@ +--- +title: "Roslyn ベースのアナライザー - .NET" +description: "問題を検出し、各問題について修正を提案する Roslyn ベースのアナライザーについて説明します。" +keywords: .NET, .NET Core +author: billwagner +ms.author: billwagner +ms.date: 01/24/2018 +ms.topic: article +ms.prod: .net +ms.technology: dotnet-standard +ms.devlang: dotnet +ms.openlocfilehash: 8c6524716ba403bc426df8dc33e64b8b2934d3d7 +ms.sourcegitcommit: 3a96c706e4dbb4667bf3bf37edac9e1666646f93 +ms.translationtype: HT +ms.contentlocale: ja-JP +ms.lasthandoff: 02/27/2018 +--- +# Roslyn ベースのアナライザー + +Roslyn ベースのアナライザーでは、.NET Compiler SDK (Roslyn の API) を使用して、プロジェクトのソース コードを分析し、問題の検出と修正の提案を行います。 検出する問題のクラスは、バグを起こしやすい慣習から API の互換性に関するセキュリティの問題まで、アナライザーによってさまざまです。 + +Roslyn ベースのアナライザーは対話型であり、ビルド中にも動作します。 Visual Studio またはコマンド ラインからビルドする際に、アナライザーはさまざまなガイダンスを提供します。 + +Visual Studio でコードを編集する場合、コードを変更するとアナライザーが実行され、問題を含むコードの作成後すぐに考えられる問題がキャッチされます。 すべての問題は波線で強調表示されます。 Visual Studio に表示される電球をクリックすると、その問題に対して考えられる修正方法がアナライザーによって提案されます。 Visual Studio またはコマンド ラインでプロジェクトをビルドすると、すべてのソース コードが分析され、潜在的な問題の全リストがアナライザーによって示されます。 次の図に例を示します。 + +![フレームワーク アナライザーによって報告される問題](./media/framework-analyzers-2.png) + +Roslyn ベースのアナライザーでは、エラー、警告、または問題の重大度に基づく情報として、潜在的な問題が報告されます。 + +Roslyn ベースのアナライザーは、プロジェクト内に NuGet パッケージとしてインストールします。 構成されたアナライザーと各アナライザーに対するすべての設定は復元され、そのプロジェクト用の任意の開発者のマシンで実行されます。 + +> [!NOTE] +> Roslyn ベースのアナライザーのユーザー エクスペリエンスは、FxCop の旧バージョンのようなコード分析ライブラリや、セキュリティ分析ツールとは異なるものです。 明示的に Roslyn ベースのアナライザーを実行する必要はありません。 Visual Studio の [分析] メニューで [コード分析の実行] メニュー項目を使用する必要はありません。 Roslyn ベースのアナライザーは、ユーザーの作業と同期して実行されます。 + +## 特定のアナライザーについての詳細 + +このセクションでは、次のアナライザーについて説明します。 + +[API アナライザー](api-analyzer.md): このアナライザーでは、コードの互換性の潜在的リスクや、非推奨の API の使用が調べられます。 +[フレームワーク アナライザー](framework-analyzer.md): このアナライザーでは、コードが .NET Framework アプリケーションのガイドラインに従っているかどうかが調べられます。 これらの規則には、セキュリティに基づく推奨事項がいくつか含まれます。 diff --git a/docs/standard/analyzers/portability-analyzer.md b/docs/standard/analyzers/portability-analyzer.md new file mode 100644 index 00000000000..b59b2821e63 --- /dev/null +++ b/docs/standard/analyzers/portability-analyzer.md @@ -0,0 +1,55 @@ +--- +title: .NET Portability Analyzer - .NET +description: ".NET Portability Analyzer ツールを使って、さまざまな .NET の実装 (.NET Core、.NET Standard、UWP、Xamarin など) の間でのコードの移植性を評価する方法について説明します。" +keywords: .NET, .NET Core +author: blackdwarf +ms.author: mairaw +ms.date: 07/26/2017 +ms.topic: article +ms.prod: .net +ms.technology: dotnet-standard +ms.devlang: dotnet +ms.assetid: 0375250f-5704-4993-a6d5-e21c499cea1e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 7e3d628fe4b4a8f01e692a70892658fceeb87953 +ms.sourcegitcommit: 75a180acb5d8a2dbd4a52915ce8e980749fb1d05 +ms.translationtype: HT +ms.contentlocale: ja-JP +ms.lasthandoff: 02/24/2018 +--- +# .NET Portability Analyzer + +ライブラリをマルチプラットフォーム対応にしたい場合や、 アプリケーションで他の .NET の実装とプロファイル (.NET Core、.NET Standard、UWP、Xamarin for iOS/Android/Mac など) との互換性を確保するのに必要な作業量を知りたい場合は、 [.NET Portability Analyzer](http://go.microsoft.com/fwlink/?LinkID=507467) が役立ちます。このツールを使用すると、アセンブリを分析して、プログラムが .NET 実装全体でどの程度柔軟な構造になっているかについて詳細なレポートを生成することができます。 Portability Analyzer は、Visual Studio 拡張機能のコンソール アプリとして提供されます。 + +## 新しいターゲット + +* [.NET Core](../../core/index.md): モジュール型の設計で、side-by-side を採用しており、クロスプラットフォームのシナリオを対象としています。 side-by-side 機能により、他のアプリに影響を与えることなく新しい .NET Core バージョンを導入することができます。 +* [ASP.NET Core](/aspnet/core): .NET Core 上に構築された最新の Web フレームワークであり、開発者に .NET Core と同じメリットを提供します。 +* [ユニバーサル Windows プラットフォーム](https://blogs.msdn.microsoft.com/dotnet/2014/04/24/net-native-performance): .NET Native の静的コンパイルを使用することで、x64 および ARM マシンで動作する Windows ストア アプリのパフォーマンスが向上します。 +* .NET Core + プラットフォーム拡張機能: .NET Core API と、WCF、ASP.NET Core、FSharp、Azure などの .NET エコシステム内のその他の API が含まれます。 +* .NET Standard + プラットフォーム拡張機能: .NET Standard API と、WCF、ASP.NET Core、FSharp、および Azure などの .NET エコシステム内のその他の API が含まれます。 + +## Portability Analyzer の使用方法 + +.NET Portability Analyzer を使用するには、[Visual Studio ギャラリー](http://go.microsoft.com/fwlink/?LinkID=507467)から拡張機能をダウンロードし、インストールする必要があります。 これは、Visual Studio 2015 と Visual Studio 2017 で機能します。 **[分析]**、 > **[Portability Analyzer Settings (Portability Analyzer の設定)]** の順に選択して構成し、ターゲット プラットフォームを選択できます。 + +![Portability のスクリーンショット](./media/portability-analyzer/portability-screenshot.png) + +プロジェクト全体を分析するには、**ソリューション エクスプローラー**でプロジェクトを右クリックし、**[Analyze Assembly Portability]** (アセンブリの移植性を分析) を選択します。 または、**[分析]** メニューで **[Analyze Assembly Portability]** (アセンブリの移植性を分析) を選択します。 そこから、プロジェクトの実行可能ファイルまたは DLL を選択します。 + +![移植性ソリューション エクスプローラー](./media/portability-analyzer/portability-solution-explorer.png) + +分析を実行すると、.NET 移植性レポートが表示されます。 ターゲット プラットフォームでサポートされていない型のみが一覧に表示され、**[エラー一覧]** の **[メッセージ]** タブで、推奨事項を確認できます。 また、**[メッセージ]** タブから問題のある領域に直接移動することもできます。 + +![移植性レポート](./media/portability-analyzer/portability-report.png) + +Visual Studio を使用しない場合は、 コマンド プロンプトから Portability Analyzer を使用することもできます。 [API Portability Analyzer](http://www.microsoft.com/download/details.aspx?id=42678) をダウンロードします。 + +* 現在のディレクトリを分析するには、次のコマンドを入力します。`\...\ApiPort.exe analyze -f .` +* 特定の .dll ファイルの一覧を分析するには、次のコマンドを入力します。`\...\ApiPort.exe analyze -f first.dll -f second.dll -f third.dll` + +.NET 移植性レポートは、Excel ファイル (*.xlsx*) として現在のディレクトリに保存されます。 Excel のブックの **[詳細]** タブに詳細情報が記載されています。 + +.NET Portability Analyzer の詳細については、[GitHub ドキュメント](https://github.com/Microsoft/dotnet-apiport#documentation)にアクセスし、Channel 9 動画の「[A Brief Look at the .NET Portability Analyzer](https://channel9.msdn.com/Blogs/Seth-Juarez/A-Brief-Look-at-the-NET-Portability-Analyzer)」 (.NET Portability Analyzer の概要) をご覧ください。 diff --git a/docs/standard/assembly-format.md b/docs/standard/assembly-format.md index 19d428b04f9..e34667274b8 100644 --- a/docs/standard/assembly-format.md +++ b/docs/standard/assembly-format.md @@ -10,11 +10,14 @@ ms.prod: .net ms.technology: dotnet-standard ms.devlang: dotnet ms.assetid: 6520323e-ff28-4c8a-ba80-e64a413199e6 -ms.openlocfilehash: 797bd4a7c160feda69a3190d9e364b166a51c703 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: cdd76558852992a5c2f6b7def83e30fb004f93b6 +ms.sourcegitcommit: 2142a4732bb4ff519b9817db4c24a237b9810d4b ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/05/2018 --- # .NET アセンブリ ファイルの形式 diff --git a/docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md b/docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md index 36df2edd1ad..e8c917a1352 100644 --- a/docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md +++ b/docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md @@ -17,42 +17,45 @@ helpviewer_keywords: - stopping asynchronous operations - asynchronous programming, beginning operations ms.assetid: c9b3501e-6bc6-40f9-8efd-4b6d9e39ccf0 -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: b31383f8972ecf345366f90460d88b6be21eab99 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 66553d18d46d94fb0febfff8460ac7764e9b62bb +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 非同期プログラミング モデル (APM) - デザイン パターンを使用する非同期操作は **Begin** *OperationName* と **End** *OperationName* という名前の、各 *OperationName* 非同期操作を開始および終了する 2 種類のメソッドとして実装されます。 たとえば、 クラスは、 および メソッドを提供して、非同期的にファイルからバイトを読み取ります。 これらのメソッドは非同期バージョンの メソッドを実装します。 + デザイン パターンを使用する非同期操作は **Begin***OperationName* と **End***OperationName* という名前の、各 *OperationName* 非同期操作を開始および終了する 2 種類のメソッドとして実装されます。 たとえば、 クラスは、 および メソッドを提供して、非同期的にファイルからバイトを読み取ります。 これらのメソッドは非同期バージョンの メソッドを実装します。 > [!NOTE] > .NET Framework 4 以降では、タスク並列ライブラリによって非同期/並列プログラミングの新しいモデルが提供されます。 詳細については、「 [Task Parallel Library (TPL)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md) 」および「 [Task-based Asynchronous Pattern (TAP)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md)」を参照してください。 - **Begin** *OperationName*を呼び出した後、アプリケーションは別のスレッドで非同期操作が行われている間も、スレッドの呼び出しに関する命令の実行を続行できます。 **Begin** *OperationName*の呼び出しごとに、アプリケーションでは **End** *OperationName* も呼び出して、操作の結果を取得する必要があります。 + **Begin***OperationName* を呼び出した後、アプリケーションは別のスレッドで非同期操作が行われている間も、スレッドの呼び出しに関する命令の実行を続行できます。 **Begin***OperationName* の呼び出しごとに、アプリケーションでは **End***OperationName* も呼び出して、操作の結果を取得する必要があります。 ## 非同期操作の開始 - **Begin** *OperationName* メソッドは非同期操作 *OperationName* を開始し、 インターフェイスを実装するオブジェクトを返します。 オブジェクトは非同期操作に関する情報を格納します。 非同期操作に関する情報を次の表に示します。 + **Begin***OperationName* メソッドは非同期操作 *OperationName* を開始し、 インターフェイスを実装するオブジェクトを返します。 オブジェクトは非同期操作に関する情報を格納します。 非同期操作に関する情報を次の表に示します。 |メンバー|説明| |------------|-----------------| ||非同期操作についての情報を格納するオプションのアプリケーション固有オブジェクト。| || 。非同期操作が完了するまでアプリケーションの実行をブロックするために使用できます。| -||非同期操作が別の **スレッドで完了する代わりに、** *Begin* OperationName の呼び出しに使用されたスレッドで完了したかどうかを示す値。| +||非同期操作が別の スレッドで完了する代わりに、**Begin***OperationName* の呼び出しに使用されたスレッドで完了したかどうかを示す値。| ||非同期操作が完了したかどうかを示す値。| - **Begin** *OperationName* メソッドは、同期バージョンのメソッドのシグネチャで宣言された、値渡しまたは参照渡しのパラメーターを受け取ります。 どの out パラメーターも、 **Begin** *OperationName* メソッド シグネチャの一部ではありません。 **Begin** *OperationName* メソッド シグネチャには、2 種類の追加のパラメーターが含まれます。 1 つ目のパラメーターは、非同期操作が完了したときに呼び出されるメソッドを参照する デリゲートを定義します。 操作完了時にメソッドを呼び出さない場合、呼び出し元は `null` (Visual Basic では`Nothing` ) を指定できます。 2 つ目の追加のパラメーターは、ユーザー定義オブジェクトです。 このオブジェクトは、アプリケーション固有の状態情報を、非同期操作が完了したときに呼び出されるメソッドに渡すために使用できます。 **Begin** *OperationName* メソッドが、ファイルから読み取ったバイトを格納するバイト配列など操作固有の追加のパラメーターを受け取る場合は、 とアプリケーション状態オブジェクトが **Begin** *OperationName* メソッド シグネチャの最後のパラメーターになります。 + **Begin***OperationName* メソッドは、同期バージョンのメソッドのシグネチャで宣言された、値渡しまたは参照渡しのパラメーターを受け取ります。 どの out パラメーターも、**Begin***OperationName* メソッド シグネチャの一部ではありません。 **Begin***OperationName* メソッド シグネチャには、2 種類の追加のパラメーターが含まれます。 1 つ目のパラメーターは、非同期操作が完了したときに呼び出されるメソッドを参照する デリゲートを定義します。 操作完了時にメソッドを呼び出さない場合、呼び出し元は `null` (Visual Basic では`Nothing` ) を指定できます。 2 つ目の追加のパラメーターは、ユーザー定義オブジェクトです。 このオブジェクトは、アプリケーション固有の状態情報を、非同期操作が完了したときに呼び出されるメソッドに渡すために使用できます。 **Begin***OperationName* メソッドが、ファイルから読み取ったバイトを格納するバイト配列など操作固有の追加のパラメーターを受け取る場合は、 とアプリケーション状態オブジェクトが **Begin***OperationName* メソッド シグネチャの最後のパラメーターになります。 - **Begin** *OperationName* は、瞬時にコントロールを呼び出し元スレッドに返します。 **Begin** *OperationName* メソッドが例外をスローする場合は、非同期操作が開始される前に例外がスローされます。 **Begin** *OperationName* メソッドが例外をスローする場合、コールバック メソッドは呼び出されません。 + **Begin***OperationName* は、瞬時にコントロールを呼び出し元スレッドに返します。 **Begin***OperationName* メソッドが例外をスローする場合は、非同期操作が開始される前に例外がスローされます。 **Begin***OperationName* メソッドが例外をスローする場合、コールバック メソッドは呼び出されません。 ## 非同期操作の終了 - **End** *OperationName* メソッドは、非同期操作の *OperationName*を終了します。 **End** *OperationName* メソッドの戻り値は、このメソッドの対応する同期操作によって返される型と同じ型であり、非同期操作に固有です。 たとえば、 メソッドは から読み取ったバイト数を返し、 メソッドはホスト コンピューターに関する情報を含む オブジェクトを返します。 **End** *OperationName* メソッドは、メソッドの同期バージョンのシグネチャで宣言された out パラメーターや ref パラメーターをすべて受け取ります。 **End** *OperationName* メソッドには、同期メソッドからのパラメーターに加えて パラメーターが含まれています。 呼び出し元は、対応する呼び出しから返されたインスタンスを **Begin** *OperationName*に渡す必要があります。 + **End***OperationName* メソッドは、非同期操作の *OperationName* を終了します。 **End***OperationName* メソッドの戻り値は、このメソッドの対応する同期操作によって返される型と同じ型であり、非同期操作に固有です。 たとえば、 メソッドは から読み取ったバイト数を返し、 メソッドはホスト コンピューターに関する情報を含む オブジェクトを返します。 **End***OperationName* メソッドは、メソッドの同期バージョンのシグネチャで宣言された out パラメーターや ref パラメーターをすべて受け取ります。 **End***OperationName* メソッドには、同期メソッドからのパラメーターに加えて パラメーターが含まれています。 呼び出し元は、対応する呼び出しから返されたインスタンスを **Begin***OperationName* に渡す必要があります。 - End **OperationName** *が呼び出されるときに* オブジェクトによって表される非同期操作が完了していない場合、 **End** *OperationName* は非同期操作が完了するまで、呼び出し元スレッドをブロックします。 非同期操作によってスローされた例外は、 **End** *OperationName* メソッドからスローされます。 同じ **を使用して** *End* OperationName メソッドを複数回呼び出す場合の効果は定義されません。 同様に、関連する Begin メソッドによって返されたのではない **を使用した** *End* OperationName メソッドの呼び出しも定義されません。 + **End***OperationName* が呼び出されるときに オブジェクトによって表される非同期操作が完了していない場合、**End***OperationName* は非同期操作が完了するまで、呼び出し元スレッドをブロックします。 非同期操作によってスローされた例外は、**End***OperationName* メソッドからスローされます。 同じ を使用して **End***OperationName* メソッドを複数回呼び出す場合の効果は定義されません。 同様に、関連する Begin メソッドによって返されたのではない を使用した **End***OperationName* メソッドの呼び出しも定義されません。 > [!NOTE] > どちらの未定義シナリオの場合でも、実装者は のスローを検討する必要があります。 @@ -62,17 +65,17 @@ ms.lasthandoff: 11/21/2017 アプリケーション開発者には、非同期操作の結果にアクセスするための、デザイン上の選択肢がいくつかあります。 どの選択が適切になるかは、アプリケーションが操作の完了前に実行できる命令を持っているかどうかによって変わります。 非同期操作の結果を受け取るまで、アプリケーションが別の作業を実行できない場合は、結果が使用可能になるまで、そのアプリケーションをブロックする必要があります。 非同期操作が完了するまでブロックするには、次に示す方法の 1 つを使用します。 -- アプリケーションのメイン スレッドから **End** *OperationName* を呼び出し、操作が完了するまでアプリケーションの実行をブロックします。 この手法の例については、次を参照してください。 [、非同期操作を終了してアプリケーションの実行をブロックして](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md)です。 +- アプリケーションのメイン スレッドから **End***OperationName* を呼び出し、操作が完了するまでアプリケーションの実行をブロックします。 この手法の例については、「[非同期操作の終了によるアプリケーション実行のブロック](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md)」を参照してください。 - を使用して、1 つ以上の操作が完了するまでアプリケーションの実行をブロックします。 この手法の例については、「 [Blocking Application Execution Using an AsyncWaitHandle](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md)」を参照してください。 非同期操作が完了するまでアプリケーションをブロックする必要がない場合は、次のいずれかの方法を使用します。 -- プロパティを定期的に確認し、操作が完了したときに **End** *OperationName* を呼び出して、操作完了ステータスをポーリングします。 この手法の例については、「 [Polling for the Status of an Asynchronous Operation](../../../docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md)」を参照してください。 +- プロパティを定期的に確認し、操作が完了したときに **End***OperationName* を呼び出して、操作完了ステータスをポーリングします。 この手法の例については、「 [Polling for the Status of an Asynchronous Operation](../../../docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md)」を参照してください。 - デリゲートを使用して、操作が完了したときに呼び出されるメソッドを指定します。 この手法の例については、「 [Using an AsyncCallback Delegate to End an Asynchronous Operation](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md)」を参照してください。 -## 関連項目 +## 参照 [イベント ベースの非同期パターン (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) [同期メソッドの非同期呼び出し](../../../docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md) [AsyncCallback デリゲートおよび状態オブジェクトの使用](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md) diff --git a/docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md index 85cc15f1f95..23049f22694 100644 --- a/docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md +++ b/docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md @@ -18,15 +18,18 @@ helpviewer_keywords: - AsyncOperation class - AsyncCompletedEventArgs class ms.assetid: 4acd2094-4f46-4eff-9190-92d0d9ff47db -caps.latest.revision: "8" +caps.latest.revision: author: dotnet-bot ms.author: dotnetcontent manager: wpickett -ms.openlocfilehash: b6a98c6854bc935eb8b319bd8a26dba8f12380ae -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 910edb8c79518f63e8b881b8eaecd69060fb6711 +ms.sourcegitcommit: 957c696f25e39f923a827fc3ad5e8ab72768838c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/13/2018 --- # イベントベースの非同期パターンを実装するための推奨される手順 イベントベースの非同期パターンは、使い慣れたイベントおよびデリゲートのセマンティクスと共に、クラス内の非同期動作を公開する効果的な方法を提供します。 イベント ベースの非同期パターンを実装するには、いくつかの固有の動作要件に従う必要があります。 以降のセクションでは、イベントベースの非同期パターンに従うクラスを実装する際に検討すべき要件とガイドラインについて説明します。 @@ -37,14 +40,14 @@ ms.lasthandoff: 11/21/2017 イベントベースの非同期パターンを実装する場合は、クラスが適切に動作し、クラスのクライアントがそのような動作に依存できるようにするため、多数の保証を提供する必要があります。 ### 完了 - 正常完了、エラー、またはキャンセルの場合に常に *MethodName*`Completed` イベント ハンドラーを呼び出します。 アプリケーションがアイドルになり完了しない状態が発生してはなりません。 この規則の唯一の例外として、非同期操作自体は完了することがないように設計されている場合があります。 + 正常完了、エラー、またはキャンセルの場合に常に *MethodName***Completed** イベント ハンドラーを呼び出します。 アプリケーションがアイドルになり完了しない状態が発生してはなりません。 この規則の唯一の例外として、非同期操作自体は完了することがないように設計されている場合があります。 ### 完了イベントおよび EventArg - 個別の *MethodName*`Async` メソッドごとに、次の設計要件を適用します。 + 個別の *MethodName***Async** メソッドごとに、次の設計要件を適用します。 -- メソッドと同じクラスで *MethodName*`Completed` イベントを定義します。 +- メソッドと同じクラスで *MethodName***Completed** イベントを定義します。 -- クラスから派生した *MethodName*`Completed` イベントの クラスと、これに付随するデリゲートを定義します。 既定のクラス名の形式は *MethodName*`CompletedEventArgs` です。 +- クラスから派生した *MethodName***Completed** イベントの クラスと、これに付随するデリゲートを定義します。 既定のクラス名の形式は、*MethodName***CompletedEventArgs** です。 - クラスは、*MethodName* メソッドの戻り値に固有のクラスにしてください。 クラスを使用する場合は、開発者に対して結果をキャストすることを義務付けないでください。 @@ -66,31 +69,31 @@ private void Form1_MethodNameCompleted(object sender, MethodNameCompletedEventAr - を返すメソッドのために `void` クラスを定義しないでください。 代わりに クラスのインスタンスを使用してください。 -- 常に *MethodName*`Completed` イベントを発生させてください。 このイベントは、正常完了、エラー、またはキャンセル時に発生する必要があります。 アプリケーションがアイドルになり完了しない状態が発生してはなりません。 +- 常に *MethodName***Completed** イベントを発生させてください。 このイベントは、正常完了、エラー、またはキャンセル時に発生する必要があります。 アプリケーションがアイドルになり完了しない状態が発生してはなりません。 - 非同期操作で発生した例外をすべてキャッチし、キャッチした例外を プロパティに割り当ててください。 - タスクの実行中にエラーが発生した場合は、結果にアクセスできないようにしてください。 プロパティが `null` ではない場合は、 構造体のプロパティにアクセスすると例外が発生するようにしてください。 この検証を行うには、 メソッドを使用します。 -- タイムアウトをエラーとしてモデル化します。 タイムアウトが発生したら、*MethodName*`Completed` イベントを発生させ、 プロパティに割り当てます。 +- タイムアウトをエラーとしてモデル化します。 タイムアウトが発生したら、*MethodName***Completed** イベントを発生させ、 プロパティに割り当てます。 -- クラスで複数の同時呼び出しがサポートされている場合は、*MethodName*`Completed` イベントに適切な `userSuppliedState` オブジェクトが含まれるようにしてください。 +- クラスで複数の同時呼び出しがサポートされている場合は、*MethodName***Completed** イベントに適切な `userSuppliedState` オブジェクトが含まれるようにしてください。 -- *MethodName*`Completed` イベントが、適切なスレッドでアプリケーション サイクルの適切な時点で発生するようにしてください。 詳細については、「スレッド処理およびコンテキスト」を参照してください。 +- *MethodName***Completed** イベントが、適切なスレッドでアプリケーション サイクルの適切な時点で発生するようにしてください。 詳細については、「スレッド処理およびコンテキスト」を参照してください。 ### 操作の同時実行 -- クラスで複数の同時呼び出しがサポートされている場合は、開発者が各呼び出しを個別に追跡できるようにするため、オブジェクト値状態パラメーターまたはタスク ID `userSuppliedState` を受け取る *MethodName*`Async` オーバーライドを定義します。 このパラメーターは常に *MethodName*`Async` メソッドのシグネチャの最終パラメーターにする必要があります。 +- クラスで複数の同時呼び出しがサポートされている場合は、開発者が各呼び出しを個別に追跡できるようにするため、オブジェクト値状態パラメーターまたはタスク ID `userSuppliedState` を受け取る *MethodName***Async** オーバーライドを定義します。 このパラメーターは、常に *MethodName***Async** メソッドのシグネチャの最終パラメーターにする必要があります。 -- オブジェクト値状態パラメーターまたはタスク ID を受け取る *MethodName*`Async` オーバーロードがクラスによって定義される場合は、そのタスク ID の操作の有効期間を追跡し、完了ハンドラーに戻す必要があります。 役に立つヘルパー クラスがあります。 同時実行管理の詳細については、「[チュートリアル: イベント ベースの非同期パターンをサポートするコンポーネントを実装する](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)」を参照してください。 +- オブジェクト値状態パラメーターまたはタスク ID を受け取る *MethodName***Async** オーバーロードがクラスによって定義される場合は、そのタスク ID の操作の有効期間を追跡し、完了ハンドラーに戻す必要があります。 役に立つヘルパー クラスがあります。 同時実行管理の詳細については、「[チュートリアル: イベント ベースの非同期パターンをサポートするコンポーネントを実装する](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)」を参照してください。 -- クラスによって、状態パラメーターなしで *MethodName*`Async` メソッドが定義され、このクラスで複数の同時呼び出しがサポートされていない場合、直前の *MethodName*`Async` 呼び出しが完了する前に *MethodName*`Async` を呼び出そうとすると、 が発生するようにします。 +- クラスによって、状態パラメーターなしで *MethodName***Async** メソッドが定義され、このクラスで複数の同時呼び出しがサポートされていない場合、直前の *MethodName***Async** 呼び出しが完了する前に *MethodName***Async** を呼び出そうとすると、 が発生するようにします。 -- 一般に、`userSuppliedState` パラメーターのない *MethodName*`Async` メソッドを複数回呼び出すときには、複数の未完了操作が存在するようにするため、例外を発生させないでください。 例外を発生させることができるのは、クラスがその状況に対処できないことが明らかであるものの、開発者がこのような区別できない複数のコールバックを処理できる場合です。 +- 一般に、`userSuppliedState` パラメーターのない *MethodName***Async** メソッドを複数回呼び出すときには、複数の未完了操作が存在するようにするため、例外を発生させないでください。 例外を発生させることができるのは、クラスがその状況に対処できないことが明らかであるものの、開発者がこのような区別できない複数のコールバックを処理できる場合です。 ### 結果へのアクセス -- 非同期操作の実行中にエラーが発生した場合、その結果にはアクセスできないようにしてください。 ではない場合に `null` のプロパティにアクセスすると、 により参照される例外が発生するようにしてください。. クラスには、この目的で使用する メソッドが用意されています。 +- 非同期操作の実行中にエラーが発生した場合、その結果にはアクセスできないようにしてください。 ではない場合に `null` のプロパティにアクセスすると、 により参照される例外が発生するようにしてください。 クラスには、この目的で使用する メソッドが用意されています。 - 結果にアクセスしようとすると、操作がキャンセルされたことを示す が発生するようにしてください。 この検証を行うには、 メソッドを使用します。 @@ -98,7 +101,7 @@ private void Form1_MethodNameCompleted(object sender, MethodNameCompletedEventAr - 可能であれば、進行状況レポートをサポートします。 これにより、開発者はクラスを使用する際に、より優れたアプリケーション ユーザー エクスペリエンスを提供できます。 -- `ProgressChanged`/*MethodName*`ProgressChanged` イベントを実装する場合は、操作の *MethodName*`Completed` イベントが発生した後で、特定の非同期操作についてそのようなイベントが発生していないようにしてください。 +- **ProgressChanged** または *MethodName***ProgressChanged** イベントを実装する場合は、操作の *MethodName***Completed** イベントが発生した後で、特定の非同期操作についてそのようなイベントが発生していないようにしてください。 - 標準 の値が設定される場合は、 が常にパーセンテージとして解釈できるようにしてください。 パーセンテージは正確である必要はありませんが、パーセンテージを表している必要があります。 進行状況レポート メトリックがパーセンテージ以外でなければならない場合は、 クラスからクラスを派生し、 は 0 のままにしておきます。 パーセンテージ以外のレポート メトリックは使用しないでください。 @@ -108,7 +111,7 @@ private void Form1_MethodNameCompleted(object sender, MethodNameCompletedEventAr - クラスが複数の同時呼び出しをサポートしている場合は、`IsBusy` プロパティを公開しないでください。 たとえば XML Web サービス プロキシは、非同期メソッドの複数同時呼び出しをサポートしているため、`IsBusy` プロパティを公開しません。 -- `IsBusy` プロパティは、*MethodName*`Async` メソッドが呼び出されてから、*MethodName*`Completed` イベントが発生するまでの間は、`true` を返します。 それ以外の場合は、`false` を返す必要があります。 プロパティを公開するクラスの例として、 および `IsBusy` コンポーネントがあります。 +- `IsBusy` プロパティは、*MethodName***Async** メソッドが呼び出されてから、*MethodName***Completed** イベントが発生するまでの間は、`true` を返します。 それ以外の場合は、`false` を返す必要があります。 プロパティを公開するクラスの例として、 および `IsBusy` コンポーネントがあります。 ### キャンセル @@ -120,7 +123,7 @@ private void Form1_MethodNameCompleted(object sender, MethodNameCompletedEventAr - キャンセル メソッドの呼び出しは常に正常に戻り、例外を発生させないようにしてください。 一般に、特定の時点で操作が実際にキャンセル可能かどうかと、前に発行したキャンセルが正常に実行されたかどうかはクライアントに通知されません。 ただし、キャンセルが正常に完了すると常にアプリケーションに通知が送られます。これは、アプリケーションが完了ステータスに関与しているためです。 -- 操作がキャンセルされた場合は *MethodName*`Completed` イベントを発生させます。 +- 操作がキャンセルされた場合は、*MethodName***Completed** イベントを発生させます。 ### エラーおよび例外 @@ -129,14 +132,14 @@ private void Form1_MethodNameCompleted(object sender, MethodNameCompletedEventAr ### スレッド処理およびコンテキスト クラスを正しく操作するには、特定のアプリケーション モデル ([!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] および Windows Forms アプリケーションを含む) の適切なスレッドまたはコンテキストで、クライアントのイベント ハンドラーが呼び出されることが重要です。 非同期クラスがどのアプリケーション モデルでも正しく動作するように、 という 2 つの重要なヘルパー クラスが用意されています。 - にはメソッド が含まれています。このメソッドは を返します。 *MethodName*`Async` メソッドは を呼び出し、クラスは返される を使用して非同期タスクの有効期間を追跡します。 + にはメソッド が含まれています。このメソッドは を返します。 *MethodName***Async** メソッドは を呼び出し、クラスは返される を使用して非同期タスクの有効期間を追跡します。 進行状況、インクリメンタル結果、および完了をクライアントに報告するため、 メソッドと メソッドを呼び出します。 は、クライアントのイベント ハンドラーに対する呼び出しを適切なスレッドまたはコンテキストにマーシャリングします。 > [!NOTE] > アプリケーション モデルのポリシーに対し明示的に準拠しないものの、イベント ベースの非同期パターンを使用する他のメリットを利用したい場合は、これらの規則を回避できます。 たとえば、Windows Forms でのクラス操作をフリー スレッド化するとします。 開発者がフリー スレッド化クラスの暗黙的な制限を理解している場合は、フリースレッド化クラスを作成できます。 コンソール アプリケーションは 呼び出しの実行を同期しません。 これが原因で、`ProgressChanged` イベントが正しくない順序で発生することがあります。 呼び出しを順次実行するには、 クラスを実装およびインストールします。 - 使用しての詳細についてはするには、非同期操作を有効にするには、「[チュートリアル: イベント ベースの非同期パターンをサポートするコンポーネントを実装する](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)です。 + を使用した非同期操作の詳細については、「[チュートリアル: イベントベースの非同期パターンをサポートするコンポーネントの実装](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)」を参照してください。 ## ガイドライン @@ -152,7 +155,7 @@ private void Form1_MethodNameCompleted(object sender, MethodNameCompletedEventAr - どのようなマルチスレッドを使用する場合でも、深刻かつ複雑なバグが発生する可能性があります。 マルチスレッドを使用するソリューションを実装する前に、「[マネージ スレッド処理の実施](../../../docs/standard/threading/managed-threading-best-practices.md)」を参照してください。 -## 関連項目 +## 参照 diff --git a/docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md b/docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md index d7a4c8d065e..cf23ccb8a06 100644 --- a/docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md +++ b/docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md @@ -14,34 +14,37 @@ helpviewer_keywords: - asynchronous programming, blocking applications - blocking application execution ms.assetid: cc5e2834-a65b-4df8-b750-7bdb79997fee -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett dev_langs: - csharp - vb -ms.openlocfilehash: ccca6e1e4f6b5cdf098018b59426fb2262e2b346 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3ec7bfe6fe2cef20a6d74030802113a47e8679e1 +ms.sourcegitcommit: 957c696f25e39f923a827fc3ad5e8ab72768838c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/13/2018 --- # 非同期操作の終了によるアプリケーション実行のブロック -非同期操作の結果の待機中に他の作業を続行できませんできるアプリケーションは、操作が完了するまでブロックする必要があります。 非同期操作の完了を待機中に、アプリケーションのメイン スレッドをブロックするのにには、次のオプションのいずれかを使用します。 +非同期操作の結果の待機中に、他の作業を継続できないアプリケーションは、操作が完了するまでブロックする必要があります。 次のオプションのいずれかを使用して、非同期操作が完了するまでの待機中に、アプリケーションのメイン スレッドをブロックします。 -- 非同期操作を呼び出す**終了** *OperationName*メソッドです。 この方法は、このトピックで示されています。 +- 非同期操作の **End***OperationName* メソッドを呼び出します。 このトピックでは、この方法のデモが実行されます。 -- 使用して、のプロパティ、 、非同期操作によって返される**開始** *OperationName*メソッドです。 この方法は、次を参照してください。[ブロックの実行を使用してアプリケーション AsyncWaitHandle](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md)です。 +- 非同期操作の **Begin***OperationName* メソッドによって返される プロパティを使用します。 この方法をデモの例については、「[AsyncWaitHandle の使用によるアプリケーション実行のブロック](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md)」を参照してください。 - 使用するアプリケーション、**終了** *OperationName*非同期操作が完了するまでブロックするメソッドの呼び出しは通常、**開始** *OperationName*メソッド、何も処理を操作の結果なしで実行できますし、**終了** *OperationName*です。 + 非同期操作が完了するまでブロックするために **End***OperationName* を使用するアプリケーションは、通常は **Begin***OperationName* メソッドを呼び出し、操作の結果なしで実行できる任意の作業を実行して、**End***OperationName* を呼び出します。 ## 例 - 次のコード例では、非同期のメソッドの使用方法を示します、ユーザー指定のコンピューターのドメイン ネーム システム情報を取得するクラス。 注意してください`null`(`Nothing` Visual Basic で) 渡される、 `requestCallback`と`stateObject`パラメーターのため、これらの引数は、このアプローチを使用する場合は必要ありません。 + 次のコード例は、ユーザー指定のコンピューターのドメイン ネーム システム情報を取得するために、 クラスの非同期メソッドを使用してデモを実行します。 この方法を使用する場合はこれらの引数は必要ないため、`null` (Visual Basic の場合は `Nothing`) は、`requestCallback` と `stateObject` パラメーターに渡されることに注意してください。 [!code-csharp[AsyncDesignPattern#1](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDesignPattern/CS/Async_EndBlock.cs#1)] [!code-vb[AsyncDesignPattern#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDesignPattern/VB/Async_EndBlock.vb#1)] -## 関連項目 +## 参照 [イベント ベースの非同期パターン (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) [イベントベースの非同期パターンの概要](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) diff --git a/docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md b/docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md index d0f4ac8a3e4..db52cbade68 100644 --- a/docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md +++ b/docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md @@ -19,31 +19,34 @@ helpviewer_keywords: - stopping asynchronous operations - blocking application execution ms.assetid: 3e32daf2-8161-4e8f-addd-9fd9ff101b03 -caps.latest.revision: "6" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 2660b3cbf7e8ee43a22edbfb66a4262684983b87 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 380080c0aa05bc5b94c9ec5fe471f2f255562cd2 +ms.sourcegitcommit: 957c696f25e39f923a827fc3ad5e8ab72768838c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/13/2018 --- # AsyncWaitHandle の使用によるアプリケーション実行のブロック -非同期操作の結果の待機中に他の作業を続行できませんできるアプリケーションは、操作が完了するまでブロックする必要があります。 非同期操作の完了を待機中に、アプリケーションのメイン スレッドをブロックするのにには、次のオプションのいずれかを使用します。 +非同期操作の結果の待機中に、他の作業を継続できないアプリケーションは、操作が完了するまでブロックする必要があります。 次のオプションのいずれかを使用して、非同期操作が完了するまでの待機中に、アプリケーションのメイン スレッドをブロックします。 -- 使用して、のプロパティ、 、非同期操作によって返される**開始** *OperationName*メソッドです。 この方法は、このトピックで示されています。 +- 非同期操作の **Begin***OperationName* メソッドによって返される プロパティを使用します。 このトピックでは、この方法のデモが実行されます。 -- 非同期操作の呼び出し**終了** *OperationName*メソッドです。 この方法は、次を参照してください。 [、非同期操作を終了してアプリケーションの実行をブロックして](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md)です。 +- 非同期操作の **End***OperationName* メソッドを呼び出します。 この方法をデモの例については、「[非同期操作の終了によるアプリケーション実行のブロック](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md)」を参照してください。 - 1 つまたは複数を使用するアプリケーション非同期操作が完了するまでブロックするオブジェクトを呼び出す通常、**開始** *OperationName*メソッド、何も処理を実行します。操作と、非同期処理されるまでブロックの結果なし次のコマンドを完了します。 1 回の操作でのいずれかを呼び出すことによってアプリケーションをブロックすることができます、メソッドを使用して、です。 一連の非同期操作の完了を待っている間にブロックは、格納、関連付けられているオブジェクト配列の最初の呼び出しで、メソッドです。 いずれかの一連の非同期操作が完了するを待っている間にブロックは、格納、関連付けられているオブジェクト配列の最初の呼び出しで、メソッドです。 + 非同期操作が完了するまでブロックする 1 つ以上の を使用するアプリケーションは、通常は **Begin***OperationName* メソッドを呼び出し、操作の結果なしで実行できる任意の作業を実行し、非同期操作が完了するまでブロックします。 アプリケーションは、 を使用して メソッドのいずれかを呼び出し、単一の操作上でブロックできます。 非同期操作のセットが完了するまで待機しながらブロックするには、関連する オブジェクトを配列に格納し、 メソッドのいずれかを呼び出します。 非同期操作のいずれかのセットが完了するまで待機しながらブロックするには、関連する オブジェクトを配列に格納し、 メソッドのいずれかを呼び出します。 ## 例 - 次のコード例では、ユーザー指定のコンピューターのドメイン ネーム システム情報を取得する DNS クラスで非同期メソッドの使用を示します。 例では、ブロックを使用して、非同期操作に関連付けられています。 なお`null`(`Nothing` Visual Basic で) が渡されました、 `requestCallback`と`stateObject`パラメーターこのアプローチを使用するときに、必要なこれらがないためです。 + 次のコード例は、ユーザー指定のコンピューターのドメイン ネーム システム情報を取得するために、DNS クラスの非同期メソッドを使用してデモを実行します。 例では、非同期操作に関連付けられた を使用して、ブロックのデモを実行します。 この方法を使用する場合は必要ないため、`null` (Visual Basic の場合は `Nothing`) は、`requestCallback` と `stateObject` パラメーターに渡されることに注意してください。 [!code-csharp[AsyncDesignPattern#2](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDesignPattern/CS/Async_EndBlockWait.cs#2)] [!code-vb[AsyncDesignPattern#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDesignPattern/VB/Async_EndBlockWait.vb#2)] -## 関連項目 +## 参照 [イベント ベースの非同期パターン (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) [イベントベースの非同期パターンの概要](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) diff --git a/docs/standard/asynchronous-programming-patterns/calling-asynchronous-methods-using-iasyncresult.md b/docs/standard/asynchronous-programming-patterns/calling-asynchronous-methods-using-iasyncresult.md index 0ebc85e6fe5..9f7b2972c6b 100644 --- a/docs/standard/asynchronous-programming-patterns/calling-asynchronous-methods-using-iasyncresult.md +++ b/docs/standard/asynchronous-programming-patterns/calling-asynchronous-methods-using-iasyncresult.md @@ -17,27 +17,30 @@ helpviewer_keywords: - IAsyncResult interface, calling asynchronous methods - stopping asynchronous operations ms.assetid: 07fba116-045b-473c-a0b7-acdbeb49861f -caps.latest.revision: "6" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 81c05aeae00e79f614ef1514e54765b21e7e2dde -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: ab98973fadf1893b4954fd19f679fe0ff690539d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # IAsyncResult を使用した非同期メソッドの呼び出し -.NET Framework およびサード パーティ製のクラス ライブラリ内の型は、アプリケーションをアプリケーションのメイン スレッド以外のスレッドで非同期操作を実行中に実行を継続できるようにするメソッドを提供できます。 次のセクションでは、記述しを使用して非同期メソッドを呼び出すことができます、さまざまな方法を示すコード例を提供、デザイン パターンです。 +.NET Framework とサードパーティのさまざま種類のクラス ライブラリが提供するメソッドを利用することで、アプリケーションはメインのアプリケーション スレッド以外のスレッドで非同期操作を実行しながら実行を継続できます。 次のセクションでは、コード例を取り上げ、 設計パターンを使用する非同期メソッドをさまざまな方法で呼び出します。 -- [非同期操作を終了してアプリケーションの実行をブロックして](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md)です。 +- [非同期操作の終了によるアプリケーション実行のブロック](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md)。 -- [AsyncWaitHandle の使用、アプリケーションの実行をブロックして](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md)です。 +- [AsyncWaitHandle の使用によるアプリケーション実行のブロック](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md)。 -- [非同期操作のステータスのポーリング](../../../docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md)です。 +- [非同期操作のステータスのポーリング](../../../docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md)。 -- [AsyncCallback デリゲートを使用して、非同期操作を終了する](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md)です。 +- [AsyncCallback デリゲートの使用による非同期操作の終了](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md)。 -## 関連項目 +## 参照 [イベント ベースの非同期パターン (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) [イベントベースの非同期パターンの概要](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) diff --git a/docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md b/docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md index 1dad1fb78bc..59bccf2ad6e 100644 --- a/docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md +++ b/docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md @@ -26,15 +26,18 @@ helpviewer_keywords: - waiting for asynchronous calls - status information [.NET Framework], asynchronous operations ms.assetid: 41972034-92ed-450a-9664-ab93fcc6f1fb -caps.latest.revision: "24" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 965e5928c03ae573eacba98a7596f55b56aaba26 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: e7e6f402d9423a8ae1ee464499f1b794785c2b06 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 同期メソッドの非同期呼び出し .NET Framework では、すべてのメソッドを非同期的に呼び出すことができます。 これを行うには、呼び出すメソッドと同じシグネチャを持つデリゲートを定義します。これにより、共通言語ランタイムによって、適切なシグネチャを持つ、このデリゲートの `BeginInvoke` メソッドと `EndInvoke` メソッドが自動的に定義されます。 @@ -44,7 +47,7 @@ ms.lasthandoff: 11/21/2017 `BeginInvoke` メソッドは、非同期呼び出しを開始します。 このメソッドは、非同期的に実行するメソッドと同じパラメーターと共に、2 つの省略可能な追加パラメーターを持っています。 最初のパラメーターは、同期呼び出しが完了したときに呼び出されるメソッドを参照する デリゲートです。 2 番目のパラメーターは、コールバック メソッドに情報を渡すユーザー定義オブジェクトです。 `BeginInvoke` からは制御がすぐに戻り、非同期呼び出しが完了するまで待機しません。 `BeginInvoke` は を返します。これを使用して非同期呼び出しの進捗状況を監視できます。 - `EndInvoke` メソッドは、非同期呼び出しの結果を取得します。 このメソッドは、 `BeginInvoke`の後であればいつでも呼び出すことができます。 非同期呼び出しがまだ完了していない場合は、 `EndInvoke` は非同期呼び出しが完了するまで呼び出し元スレッドをブロックします。 パラメーター`EndInvoke`含める、`out`と`ref`パラメーター (`` `ByRef`と`ByRef`Visual Basic で)、非同期的に実行するメソッドの加えたによって返される`BeginInvoke`. + `EndInvoke` メソッドは、非同期呼び出しの結果を取得します。 このメソッドは、 `BeginInvoke`の後であればいつでも呼び出すことができます。 非同期呼び出しがまだ完了していない場合は、 `EndInvoke` は非同期呼び出しが完了するまで呼び出し元スレッドをブロックします。 `EndInvoke` のパラメーターには、非同期実行するメソッドの `out` パラメーターと `ref` パラメーター (Visual Basic では `` `ByRef` と `ByRef`) と、`BeginInvoke` によって返された が含まれます。 > [!NOTE] > [!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] の IntelliSense 機能によって `BeginInvoke` および `EndInvoke`のパラメーターが表示されます。 Visual Studio や類似のツールを使っていない場合や、[!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] で C# を使っている場合、これらのメソッドについて定義されているパラメーターについては、「[非同期プログラミング モデル (APM)](../../../docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md)」を参照してください。 @@ -57,7 +60,7 @@ ms.lasthandoff: 11/21/2017 - によって返される `BeginInvoke` をポーリングして非同期呼び出しが完了したかどうかを確認した後、 `EndInvoke`を呼び出します。 -- コールバック メソッドのデリゲートを `BeginInvoke`に渡します。 このメソッドは、非同期呼び出しが完了すると、 スレッドで実行されます。 コールバック メソッドは `EndInvoke`を呼び出します。 +- コールバック メソッドのデリゲートを `BeginInvoke` に渡します。 このメソッドは、非同期呼び出しが完了すると、 スレッドで実行されます。 コールバック メソッドは `EndInvoke` を呼び出します。 > [!IMPORTANT] > どの手法を使用する場合でも、常に `EndInvoke` を呼び出して、非同期呼び出しを完了します。 @@ -87,7 +90,7 @@ ms.lasthandoff: 11/21/2017 を使用する場合は、非同期呼び出しの完了前または完了後、 `EndInvoke` を呼び出して結果を取得する前に、追加の処理を実行できます。 > [!NOTE] -> `EndInvoke`を呼び出す場合、待機ハンドルは自動的に閉じられません。 待機ハンドルへのすべての参照を解放すると、ガベージ コレクションが待機ハンドルをクリアするときにシステム リソースが解放されます。 待機ハンドルの使用が終了すると同時にシステム リソースを解放するには、 メソッドを呼び出して破棄します。 破棄可能なオブジェクトが明示的に破棄されると、ガベージ コレクションはより効率的に動作します。 +> `EndInvoke` を呼び出す場合、待機ハンドルは自動的に閉じられません。 待機ハンドルへのすべての参照を解放すると、ガベージ コレクションが待機ハンドルをクリアするときにシステム リソースが解放されます。 待機ハンドルの使用が終了すると同時にシステム リソースを解放するには、 メソッドを呼び出して破棄します。 破棄可能なオブジェクトが明示的に破棄されると、ガベージ コレクションはより効率的に動作します。 [!code-cpp[AsyncDelegateExamples#3](../../../samples/snippets/cpp/VS_Snippets_CLR/AsyncDelegateExamples/cpp/waithandle.cpp#3)] [!code-csharp[AsyncDelegateExamples#3](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDelegateExamples/CS/waithandle.cs#3)] @@ -107,7 +110,7 @@ ms.lasthandoff: 11/21/2017 例に関する注意事項 -- `threadId`のパラメーター`TestMethod`は、`out`パラメーター ([`` `ByRef` Visual Basic で) ため、入力値を使用することはありません、`TestMethod`です。 `BeginInvoke` 呼び出しにはダミー変数が渡されます。 `threadId` パラメーターが `ref` パラメーター (Visual Basic では`ByRef` ) であった場合、 `BeginInvoke` と `EndInvoke`の両方に渡すことができるように、変数はクラス レベルのフィールドであることが必要です。 +- `TestMethod` の `threadId` パラメーターは `out` パラメーター (Visual Basic では [`` `ByRef`) であるため、その入力値が `TestMethod` で使用されることはありません。 `BeginInvoke` 呼び出しにはダミー変数が渡されます。 `threadId` パラメーターが `ref` パラメーター (Visual Basic では`ByRef` ) であった場合、 `BeginInvoke` と `EndInvoke`の両方に渡すことができるように、変数はクラス レベルのフィールドであることが必要です。 - `BeginInvoke` に渡される状態情報は、コールバック メソッドが出力メッセージを書式指定するために使用する書式指定文字列です。 型 として渡されるため、状態情報を使用するには適切な型にキャストする必要があります。 @@ -117,6 +120,6 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[AsyncDelegateExamples#5](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDelegateExamples/CS/callback.cs#5)] [!code-vb[AsyncDelegateExamples#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDelegateExamples/VB/callback.vb#5)] -## 関連項目 +## 参照 [イベント ベースの非同期パターン (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) diff --git a/docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md index 5f0a83b907f..eb533bfbc38 100644 --- a/docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md +++ b/docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md @@ -24,245 +24,248 @@ helpviewer_keywords: - threading [Windows Forms], asynchronous features - AsyncCompletedEventArgs class ms.assetid: 61f676b5-936f-40f6-83ce-f22805ec9c2f -caps.latest.revision: "21" +caps.latest.revision: author: dotnet-bot ms.author: dotnetcontent manager: wpickett -ms.openlocfilehash: 150e4b27cc149774895574ddd196de5f9bc2acd8 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 57997b00082fd2068638d83cb828b3fa6fbdfb97 +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/19/2018 --- # チュートリアル : イベントベースの非同期パターンをサポートするコンポーネントの実装 -著しい遅延が発生する可能性がありますをいくつかの操作のクラスを作成している場合は、実装することによって、非同期機能を付けることを検討して、[イベント ベースの非同期パターン概要](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md)です。 +顕著な遅延が発生する可能性がある操作を伴うクラスを作成する場合は、[イベント ベースの非同期パターン](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md)を実装することによって、非同期機能を与えることを検討します。 - このチュートリアルでは、イベント ベースの非同期パターンを実装するコンポーネントを作成する方法について説明します。 ヘルパー クラスを使用して実装されている、コンポーネントが正しく動作する任意のアプリケーション モデルで実行できるようにするには、名前空間を含む[!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)]、コンソール アプリケーションと Windows フォーム アプリケーションです。 また、このコンポーネントは、コントロールや、独自のカスタム デザイナーです。 + このチュートリアルでは、イベント ベースの非同期パターンを実装するコンポーネントの作成方法を示します。 これは、 名前空間のヘルパー クラスを使用して実装します。これにより、コンポーネントは任意のアプリケーション モデルで正常に動作します ([!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)]、コンソール アプリケーション、Windows フォーム アプリケーションなど)。 また、このコンポーネントは、 コントロールや独自のカスタム デザイナーで設計可能です。 - ときに非同期的に含まれる素数を計算するアプリケーションがあります。 アプリケーションは、主要なユーザー インターフェイス (UI) スレッドと各素数計算のためのスレッドがあります。 多数あるかどうかをテスト素数かなりの時間がかかることができます、この遅延によって、メイン UI スレッドは中断されませんやフォームが応答性の高い計算中にします。 多数の計算は自由に同時に、選択的に取り消しと保留中の計算を実行することができます。 + このチュートリアルを完了すると、素数を非同期に計算するアプリケーションが作成されます。 アプリケーションには、メイン ユーザー インターフェイス (UI) スレッドと各素数の計算用のスレッドがあります。 大きな数が素数かどうかを調べるにはかなりの時間がかかることがありますが、この遅延によってメイン UI スレッドが中断されることはなく、計算中もフォームは応答性を維持します。 いくつでも好きなだけ計算を同時に実行し、保留中の計算を選択的に取り消すことができます。 このチュートリアルでは、以下のタスクを行います。 - コンポーネントの作成 -- パブリックの非同期イベントおよびデリゲートを定義します。 +- パブリックの非同期イベントとデリゲートの定義 - プライベート デリゲートの定義 -- パブリック イベントを実装します。 +- パブリック イベントの実装 - 完了メソッドの実装 - ワーカー メソッドの実装 -- 開始とキャンセル メソッドの実装 +- 開始メソッドとキャンセル メソッドの実装 - このトピックの「単一のリストとしてコードをコピーするに、を参照してください。[する方法: イベント ベースの非同期パターンをサポートするコンポーネントを実装する](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)です。 + このトピックのコードを単一のリストとしてコピーするには、「[方法 : イベントベースの非同期パターンをサポートするコンポーネントを実装する](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)」をご覧ください。 ## コンポーネントの作成 - 最初の手順では、イベント ベースの非同期パターンを実装するコンポーネントを作成します。 + 最初に、イベント ベースの非同期パターンを実装するコンポーネントを作成します。 #### コンポーネントを作成するには -- 呼ばれるクラスを作成する`PrimeNumberCalculator`から継承するです。 +- を継承する `PrimeNumberCalculator` というクラスを作成します。 -## パブリックの非同期イベントおよびデリゲートを定義します。 - コンポーネントは、イベントを使用するクライアントと通信します。 *MethodName* `Completed` 、非同期タスクの完了をクライアントに警告イベント、および*MethodName* `ProgressChanged`イベントは、非同期タスクの進行状況のクライアントに通知します。 +## パブリックの非同期イベントとデリゲートの定義 + コンポーネントは、イベントを使ってクライアントと通信します。 *MethodName***Completed** イベントは非同期タスクの完了をクライアントに通知し、*MethodName***ProgressChanged** イベントは非同期タスクの進行状況をクライアントに通知します。 -#### コンポーネントのクライアントの非同期イベントを定義します。 +#### コンポーネントのクライアント用の非同期イベントを定義するには: -1. インポート、ファイルの上部にある名前空間。 +1. ファイルの先頭で および 名前空間をインポートします。 [!code-csharp[System.ComponentModel.AsyncOperationManager#11](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#11)] [!code-vb[System.ComponentModel.AsyncOperationManager#11](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#11)] -2. 前に、`PrimeNumberCalculator`クラス定義、進行状況と完了イベントのデリゲートを宣言します。 +2. `PrimeNumberCalculator` クラスの定義の前で、進行状況イベントと完了イベントのデリゲートを宣言します。 [!code-csharp[System.ComponentModel.AsyncOperationManager#7](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#7)] [!code-vb[System.ComponentModel.AsyncOperationManager#7](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#7)] -3. `PrimeNumberCalculator`クラス定義、レポートの進行状況および完了をクライアントのイベントを宣言します。 +3. `PrimeNumberCalculator` クラスの定義で、進行状況と完了をクライアントに報告するイベントを宣言します。 [!code-csharp[System.ComponentModel.AsyncOperationManager#8](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#8)] [!code-vb[System.ComponentModel.AsyncOperationManager#8](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#8)] -4. 後に、`PrimeNumberCalculator`クラス定義、派生、`CalculatePrimeCompletedEventArgs`のクライアントのイベント ハンドラーをそれぞれの計算の結果を報告のクラス、 `CalculatePrimeCompleted`.event です。 加え、`AsyncCompletedEventArgs`プロパティ、このクラスにより、クライアントは、どの番号がテストされているの主要なであるか、および最初の除数は素がないかどうかを決定します。 +4. `PrimeNumberCalculator` クラスの定義の後で、`CalculatePrimeCompleted` イベントに対するクライアントのイベント ハンドラーに各計算の結果を報告するための `CalculatePrimeCompletedEventArgs` クラスを派生します。 `AsyncCompletedEventArgs` プロパティに加えて、このクラスにより、クライアントはテストされた値、その値が素数かどうか、素数でない場合は最初の約数を知ることができます。 [!code-csharp[System.ComponentModel.AsyncOperationManager#6](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#6)] [!code-vb[System.ComponentModel.AsyncOperationManager#6](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#6)] ## チェックポイント - この時点では、コンポーネントをビルドすることができます。 + この段階で、コンポーネントをビルドすることができます。 #### コンポーネントをテストするには - コンポーネントをコンパイルします。 - 2 つのコンパイラ警告が表示されます。 + コンパイラの警告が 2 つ表示されます。 ``` warning CS0067: The event 'AsynchronousPatternExample.PrimeNumberCalculator.ProgressChanged' is never used warning CS0067: The event 'AsynchronousPatternExample.PrimeNumberCalculator.CalculatePrimeCompleted' is never used ``` - 次のセクションでは、これらの警告が消去されます。 + これらの警告は次のセクションでなくなります。 ## プライベート デリゲートの定義 - 非同期の側面、`PrimeNumberCalculator`と呼ばれる特別なデリゲートを使用してコンポーネントを内部的に実装されます、です。 Aで実行されるコールバック メソッドを表す、スレッドです。 コールバック メソッドには、型の 1 つのパラメーターを受け取る署名が必要、することができるはラッパー クラスでデリゲートの間で状態を渡す必要があります。 詳細については、「」を参照してください。 + `PrimeNumberCalculator` コンポーネントの非同期の側面は、 と呼ばれる特別なデリゲートを使って内部的に実装されます。 は、 スレッドで実行するコールバック メソッドを表します。 コールバック メソッドは、 型のパラメーターを 1 つ受け取るシグネチャを持つ必要があります。つまり、ラッパー クラスでデリゲートに状態を渡す必要があります。 詳細については、「」を参照してください。 -#### コンポーネントの内部の非同期動作を実装するには。 +#### コンポーネントの内部非同期動作を実装するには: -1. 宣言し、作成、でデリゲート、`PrimeNumberCalculator`クラスです。 作成、ユーティリティ メソッド内のオブジェクトと呼ばれる`InitializeDelegates`です。 +1. `PrimeNumberCalculator` クラスで デリゲートを宣言して作成します。 `InitializeDelegates` という名前のユーティリティ メソッドで オブジェクトを作成します。 - 2 つのデリゲートが必要になります。 クライアントに進行状況をレポート用とクライアントの完了を報告します。 + 2 つのデリゲートが必要です。1 つはクライアントに進行状況を報告するためのもので、もう 1 つはクライアントに完了を報告するためのものです。 [!code-csharp[System.ComponentModel.AsyncOperationManager#9](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#9)] [!code-vb[System.ComponentModel.AsyncOperationManager#9](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#9)] [!code-csharp[System.ComponentModel.AsyncOperationManager#20](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#20)] [!code-vb[System.ComponentModel.AsyncOperationManager#20](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#20)] -2. 呼び出す、`InitializeDelegates`コンポーネントのコンス トラクターのメソッドです。 +2. コンポーネントのコンストラクターで `InitializeDelegates` メソッドを呼び出します。 [!code-csharp[System.ComponentModel.AsyncOperationManager#21](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#21)] [!code-vb[System.ComponentModel.AsyncOperationManager#21](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#21)] -3. デリゲートを宣言、`PrimeNumberCalculator`を非同期的に実行する実際の作業を処理するクラス。 このデリゲートは、数値が素数かどうかをテストするワーカー メソッドをラップします。 デリゲートは、非同期操作の有効期間を追跡するために使用されるパラメーター。 +3. 実際の処理を非同期に行う `PrimeNumberCalculator` クラスのデリゲートを宣言します。 このデリゲートは、数値が素数かどうかをテストするワーカー メソッドをラップします。 デリゲートは パラメーターを受け取ります。このパラメーターは、非同期操作の有効期間を追跡するために使われます。 [!code-csharp[System.ComponentModel.AsyncOperationManager#22](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#22)] [!code-vb[System.ComponentModel.AsyncOperationManager#22](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#22)] -4. 保留中の非同期操作の有効期間を管理するためのコレクションを作成します。 クライアントでは、この追跡を行うクライアントが非同期メソッドの呼び出しを作成するときに、一意のトークン、またはタスク ID を渡すクライアントを必要として、実行、完了すると、操作を追跡する方法が必要です。 `PrimeNumberCalculator`コンポーネント必要がありますの追跡の各呼び出しの対応する呼び出しと、タスク ID を関連付けることによってです。 クライアントがタスク ID が一意でないことに渡す場合、`PrimeNumberCalculator`コンポーネントが例外を発生させる必要があります。 +4. 保留中の非同期操作の有効期間を管理するためのコレクションを作成します。 クライアントは操作の実行と完了を追跡する手段が必要であり、この追跡は、クライアントが非同期メソッドを呼び出すときに渡す必要のある一意のトークン (タスク ID) を使って行われます。 `PrimeNumberCalculator` コンポーネントは、タスク ID を対応する呼び出しと関連付けることによって、各呼び出しの追跡を維持する必要があります。 クライアントが一意でないタスク ID を渡した場合、`PrimeNumberCalculator` コンポーネントは例外を生成する必要があります。 - `PrimeNumberCalculator`コンポーネントの追跡タスク ID と呼ばれる特別なコレクション クラスを使用して、です。 クラス定義の作成、と呼ばれる`userTokenToLifetime`です。 + `PrimeNumberCalculator` コンポーネントは、 という特別なコレクション クラスを使ってタスク ID を追跡します。 クラスの定義で、`userTokenToLifetime` という名前の を作成します。 [!code-csharp[System.ComponentModel.AsyncOperationManager#23](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#23)] [!code-vb[System.ComponentModel.AsyncOperationManager#23](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#23)] -## パブリック イベントを実装します。 - イベント ベースの非同期パターンを実装するコンポーネントは、イベントを使用してクライアントに通信します。 これらのイベントが利用して適切なスレッドで呼び出される、クラスです。 +## パブリック イベントの実装 + イベント ベースの非同期パターンを実装するコンポーネントは、イベントを使ってクライアントに通信します。 これらのイベントは、 クラスを使って適切なスレッドで呼び出されます。 -#### イベントを発生させるコンポーネントのクライアント。 +#### コンポーネントのクライアントに対するイベントを生成するには: -1. クライアントへの報告のパブリック イベントを実装します。 イベントは、進行状況と完了をレポートに 1 つのレポートの必要があります。 +1. クライアントに報告するためのパブリック イベントを実装します。 進行状況報告用のイベントと、完了報告用のイベントが必要です。 [!code-csharp[System.ComponentModel.AsyncOperationManager#24](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#24)] [!code-vb[System.ComponentModel.AsyncOperationManager#24](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#24)] ## 完了メソッドの実装 - 完了デリゲートは、非同期操作が正常に完了、エラー、またはキャンセルして終了時に、基になる、フリー スレッドの非同期動作で起動される方法です。 この呼び出しは、任意のスレッドで発生します。 + 完了デリゲートは、非同期操作が正常完了、エラー、またはキャンセルで終了すると、基になっているフリー スレッドの非同期動作が呼び出すメソッドです。 この呼び出しは、任意のスレッドで発生します。 - このメソッドは、クライアントのタスクの ID が一意のクライアントのトークンの内部コレクションから削除する場所です。 また、このメソッドは呼び出すことによって、特定の非同期操作の有効期間を終了、メソッドを対応するです。 この呼び出しでは、アプリケーション モデルを適切なスレッドで完了イベントを発生させます。 後に、メソッドは、このインスタンスの使用できなくでき、それを使用しようとした後は例外をスローします。 + このメソッドでは、クライアントのタスク ID が一意のクライアント トークンの内部コレクションから削除されます。 また、このメソッドは、対応する メソッドを呼び出すことにより、特定の非同期操作の有効期間を終了させます。 この呼び出しでは、アプリケーション モデルの適切なスレッドで完了イベントが発生します。 メソッドが呼び出された後、 のこのインスタンスは使えなくなり、それ以降にこれを使おうとするとすべて例外がスローされます。 - `CompletionMethod`署名が保持するすべての状態、非同期操作の結果を記述するために必要です。 素数の数値ではない場合、数値が素数と、最初の除数の値かどうかは、この特定の非同期操作によってテストされた数の状態を保持します。 状態が発生した任意の例外を記述するも保持し、この特定のタスクに対応します。 + `CompletionMethod` のシグネチャは、非同期操作の結果を記述するために必要なすべての状態を保持する必要があります。 この特定の非同期操作によってテストされた値の状態、その値が素数かどうか、素数の場合は最初の約数を保持しています。 また、発生した例外を記述する状態、およびこの特定のタスクに対応する も保持します。 -#### 非同期操作を完了します。 +#### 非同期操作を完了するには: -- 完了メソッドを実装します。 設定にそれを使用して、6 つのパラメーター、`CalculatePrimeCompletedEventArgs`を通じて、クライアントのクライアントに返される`CalculatePrimeCompletedEventHandler`です。 内部のコレクションから、クライアントのタスクの ID トークンを削除しを呼び出して非同期操作の有効期間終了です。 スレッドまたはコンテキストに適したアプリケーション モデルへの呼び出しをマーシャ リングします。 +- 完了メソッドを実装します。 このメソッドは 6 つのパラメーターを受け取り、それを使って、クライアントの `CalculatePrimeCompletedEventHandler` によってクライアントに返される `CalculatePrimeCompletedEventArgs` を設定します。 また、クライアントのタスク ID トークンを内部コレクションから削除し、 を呼び出して非同期操作の有効期間を終了します。 は、アプリケーション モデルに適したスレッドまたはコンテキストへの呼び出しをマーシャリングします。 [!code-csharp[System.ComponentModel.AsyncOperationManager#26](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#26)] [!code-vb[System.ComponentModel.AsyncOperationManager#26](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#26)] ## チェックポイント - この時点では、コンポーネントをビルドすることができます。 + この段階で、コンポーネントをビルドすることができます。 #### コンポーネントをテストするには - コンポーネントをコンパイルします。 - コンパイラの警告が表示されます。 + コンパイラの警告が 1 つ表示されます。 ``` warning CS0169: The private field 'AsynchronousPatternExample.PrimeNumberCalculator.workerDelegate' is never used ``` - この警告は、次のセクションでは解決されます。 + この警告は次のセクションで解決されます。 ## ワーカー メソッドの実装 - これまでのサポート、非同期コードを実装している、`PrimeNumberCalculator`コンポーネントです。 実際の処理を行うコードを実装できます。 次の 3 つの方法を実装する: `CalculateWorker`、 `BuildPrimeNumberList`、および`IsPrime`です。 同時に、`BuildPrimeNumberList`と`IsPrime`篩のエラトステネス、かどうかを数値素数テスト数値の平方根までのすべての素数を検索するいると呼ばれる、よく知られているアルゴリズムを構成します。 その時点で除数が見つからない場合、テストの数は、素数です。 + ここまでで、`PrimeNumberCalculator` コンポーネントをサポートする非同期コードを実装できました。 次に、実際の処理を行うコードを実装できます。 3 つのメソッド `CalculateWorker`、`BuildPrimeNumberList`、`IsPrime` を実装します。 また、`BuildPrimeNumberList` と `IsPrime` は、Sieve of Eratosthenes と呼ばれるよく知られたアルゴリズムを構成します。これは、テストする数値の平方根までのすべての素数を調べることで、その数値が素数かどうかを判定します。 平方根までに約数が見つからない場合、テスト対象の値は素数です。 - このコンポーネントは、効率性を高める用に作成された場合、異なるテスト数値のさまざまな呼び出しによって検出されたすべての素数を記憶します。 2、3、5 などの単純な除数もチェックします。 どの時間のかかる操作を示すためには、この例の目的は、実行できる非同期で、ただし、ため、これらの最適化は、手順のままにします。 + このコンポーネントが最大限の効率性で作成されているとしたら、異なるテスト数値のさまざまな呼び出しによって検出されたすべての素数を記憶しています。 また、2、3、5 などの自明の約数もチェックします。 ただし、この例の目的は時間のかかる操作を非同期に実行する方法を示すことなので、これらの最適化は自習のために残しておきます。 - `CalculateWorker`メソッドは、デリゲートにラップされ、呼び出しを非同期で呼び出される`BeginInvoke`です。 + `CalculateWorker` メソッドはデリゲートにラップされており、`BeginInvoke` の呼び出しとは非同期に呼び出されます。 > [!NOTE] -> 進行状況レポートでは実装されて、`BuildPrimeNumberList`メソッドです。 高速なコンピューターは、`ProgressChanged`すばやく連続的にイベントを発生することができます。 これらのイベントが発生した、クライアントのスレッドは、このような状況を処理できる必要があります。 ユーザー インターフェイスのコードのメッセージであふれしてありますに対する遅れ、ハングします。 このような状況を処理する例のユーザー インターフェイスを参照してください。[する方法: イベント ベースの非同期パターンのクライアントを実装する](../../../docs/standard/asynchronous-programming-patterns/how-to-implement-a-client-of-the-event-based-asynchronous-pattern.md)です。 +> 進行状況の報告は、`BuildPrimeNumberList` メソッドで実装されています。 高速なコンピューターでは、`ProgressChanged` イベントが立て続けに発生する可能性があります。 これらのイベントが生成されるクライアント スレッドは、このような状況を処理できる必要があります。 ユーザー インターフェイスのコードがメッセージであふれ、処理が追いつかなくなり、ハングする可能性があります。 この状況を処理するユーザー インターフェイスの例については、「[方法: イベントベースの非同期パターンのクライアントを実装する](../../../docs/standard/asynchronous-programming-patterns/how-to-implement-a-client-of-the-event-based-asynchronous-pattern.md)」をご覧ください。 -#### 素数の計算を非同期的に実行するには。 +#### 素数の計算を非同期に実行するには: -1. 実装、`TaskCanceled`ユーティリティ メソッドです。 これは、指定したタスクの ID のタスクの有効期間のコレクションをチェックし、返します`true`タスク ID が見つからない場合。 +1. `TaskCanceled` ユーティリティ メソッドを実装します。 このメソッドは、タスク有効期間コレクションで指定されたタスク ID をチェックし、タスク ID が見つからない場合は `true` を返します。 [!code-csharp[System.ComponentModel.AsyncOperationManager#32](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#32)] [!code-vb[System.ComponentModel.AsyncOperationManager#32](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#32)] -2. `CalculateWorker` メソッドを実装します。 2 つのパラメーター: 数をテストするには、です。 +2. `CalculateWorker` メソッドを実装します。 このメソッドは、テストする数と の 2 つのパラメーターを受け取ります。 [!code-csharp[System.ComponentModel.AsyncOperationManager#27](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#27)] [!code-vb[System.ComponentModel.AsyncOperationManager#27](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#27)] -3. `BuildPrimeNumberList` を実装します。 2 つのパラメーター: をテストするには、番号とです。 使用して、レポートの進行状況およびインクリメンタル結果をします。 これで、適切なスレッドまたはアプリケーション モデルのコンテキストで、クライアントのイベント ハンドラーを呼び出すことができます。 ときに`BuildPrimeNumberList`素数見つかると、報告この増分の結果としてのクライアントのイベント ハンドラーに、`ProgressChanged`イベント。 派生したクラスが必要ですという`CalculatePrimeProgressChangedEventArgs`、これがいずれかの追加と呼ばれるプロパティ`LatestPrimeNumber`です。 +3. `BuildPrimeNumberList` を実装します。 このメソッドは、テストする数と の 2 つのパラメーターを受け取ります。 を使って、進行状況とインクリメンタルな結果を報告します。 これにより、アプリケーション モデルの適切なスレッドまたはコンテキストで、クライアントのイベント ハンドラーが呼び出されます。 `BuildPrimeNumberList` は、素数を見つけると、`ProgressChanged` イベントに対するクライアントのイベント ハンドラーに、インクリメンタルな結果としてこれを報告します。 これには から派生した `CalculatePrimeProgressChangedEventArgs` という名前のクラスが必要であり、このクラスには `LatestPrimeNumber` という名前の追加プロパティが 1 つあります。 - `BuildPrimeNumberList`メソッドも定期的に呼び出して、`TaskCanceled`メソッドと終了メソッドを返す場合`true`です。 + `BuildPrimeNumberList` メソッドは `TaskCanceled` メソッドも定期的に呼び出し、このメソッドが `true` を返すと終了します。 [!code-csharp[System.ComponentModel.AsyncOperationManager#5](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#5)] [!code-vb[System.ComponentModel.AsyncOperationManager#5](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#5)] -4. `IsPrime` を実装します。 3 つのパラメーター: 既知の素数をテストする数、および最初に見つかった除数の出力パラメーターの一覧です。 素数のリストを指定するには、テスト数は素数が決定されます。 +4. `IsPrime` を実装します。 このメソッドは、既知の素数のリスト、テスト対象の数、および見つかった最初の約数の出力パラメーターの、3 つのパラメーターを受け取ります。 素数のリストを基に、テスト対象の数が素数かどうかを特定します。 [!code-csharp[System.ComponentModel.AsyncOperationManager#28](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#28)] [!code-vb[System.ComponentModel.AsyncOperationManager#28](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#28)] -5. 派生`CalculatePrimeProgressChangedEventArgs`からです。 このクラスは、クライアントのイベント ハンドラーにインクリメンタル結果を報告するために必要な`ProgressChanged`イベント。 呼ばれる 1 つの追加プロパティがある`LatestPrimeNumber`です。 +5. から `CalculatePrimeProgressChangedEventArgs` を派生します。 このクラスは、`ProgressChanged` イベントに対するクライアントのイベント ハンドラーにインクリメンタルな結果を報告するために必要です。 `LatestPrimeNumber` という名前の追加プロパティが 1 つあります。 [!code-csharp[System.ComponentModel.AsyncOperationManager#29](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#29)] [!code-vb[System.ComponentModel.AsyncOperationManager#29](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#29)] ## チェックポイント - この時点では、コンポーネントをビルドすることができます。 + この段階で、コンポーネントをビルドすることができます。 #### コンポーネントをテストするには - コンポーネントをコンパイルします。 - 書き込まれるは開始して、非同期操作をキャンセルする方法は、すべて`CalculatePrimeAsync`と`CancelAsync`です。 + 残っているのは、非同期操作を開始およびキャンセルするメソッドである `CalculatePrimeAsync` と `CancelAsync` です。 -## 開始とキャンセル メソッドの実装 - 呼び出すことにより、独自のスレッドで、ワーカー スレッドを開始する`BeginInvoke`でそれをラップするデリゲート。 特定の非同期操作の有効期間を管理するを呼び出す、メソッドをヘルパー クラス。 これを返します、 、適切なスレッドまたはコンテキストに、クライアントのイベント ハンドラーに呼び出しをマーシャ リングします。 +## 開始メソッドとキャンセル メソッドの実装 + ラップするデリゲートで `BeginInvoke` を呼び出すことにより、専用のスレッドでワーカー メソッドを開始します。 特定の非同期操作の有効期間を管理するには、 ヘルパー クラスの メソッドを呼び出します。 このメソッドが返す は、クライアントのイベント ハンドラーに対する呼び出しを適切なスレッドまたはコンテキストにマーシャリングします。 - 呼び出して、特定の保留中の操作を取り消すそれに対応する です。 これは、操作を終了する、し、後続の呼び出し、例外がスローされます。 + 特定の保留中操作を取り消すには、対応する を呼び出します。 このメソッドはその操作を終了するので、それ以降に を呼び出すと例外がスローされます。 -#### 開始を実装する機能をキャンセルします。 +#### 開始とキャンセルの機能を実装するには: -1. `CalculatePrimeAsync` メソッドを実装します。 クライアントが指定したトークン (タスク ID) が現在保留中のタスクを表すすべてのトークンで一意であることを確認してください。 クライアントが非一意のトークンで渡す場合`CalculatePrimeAsync`例外が発生します。 それ以外の場合、トークンは、タスク ID のコレクションに追加されます。 +1. `CalculatePrimeAsync` メソッドを実装します。 クライアントが提供したトークン (タスク ID) が、現在保留中のタスクを表すすべてのトークンの間で一意であることを確認します。 クライアントが一意ではないトークンを渡した場合、`CalculatePrimeAsync` は例外を生成します。 一意の場合は、トークンはタスク ID のコレクションに追加されます。 [!code-csharp[System.ComponentModel.AsyncOperationManager#3](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#3)] [!code-vb[System.ComponentModel.AsyncOperationManager#3](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#3)] -2. `CancelAsync` メソッドを実装します。 場合、`taskId`トークンのコレクションにパラメーターが存在し、削除されます。 これは、取り消されたタスクの実行を開始していないことを防ぎます。 タスクが実行されている場合、`BuildPrimeNumberList`メソッドは、タスク ID が有効期間のコレクションから削除されたことを検出した場合に終了します。 +2. `CancelAsync` メソッドを実装します。 トークン コレクションに `taskId` パラメーターが存在する場合は、削除されます。 これにより、開始する前に取り消されたタスクが実行するのを防ぎます。 タスクが実行中の場合、`BuildPrimeNumberList` メソッドは、タスク ID が有効期間コレクションから削除されたことを検出すると終了します。 [!code-csharp[System.ComponentModel.AsyncOperationManager#4](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#4)] [!code-vb[System.ComponentModel.AsyncOperationManager#4](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#4)] ## チェックポイント - この時点では、コンポーネントをビルドすることができます。 + この段階で、コンポーネントをビルドすることができます。 #### コンポーネントをテストするには - コンポーネントをコンパイルします。 - `PrimeNumberCalculator`コンポーネントは完全で使用できるようにします。 + `PrimeNumberCalculator` コンポーネントが完全して使用できるようになります。 - 使用する例をクライアントに対して、`PrimeNumberCalculator`コンポーネントを参照してください[する方法: イベント ベースの非同期パターンのクライアントを実装する](../../../docs/standard/asynchronous-programming-patterns/how-to-implement-a-client-of-the-event-based-asynchronous-pattern.md)です。 + `PrimeNumberCalculator` コンポーネントを使うクライアントの例については、「[方法: イベントベースの非同期パターンのクライアントを実装する](../../../docs/standard/asynchronous-programming-patterns/how-to-implement-a-client-of-the-event-based-asynchronous-pattern.md)」をご覧ください。 ## 次の手順 - この例を記入を記述して`CalculatePrime`、同期に相当`CalculatePrimeAsync`メソッドです。 これは、操作を行う、`PrimeNumberCalculator`コンポーネント、イベント ベースの非同期パターンに完全に準拠します。 + `CalculatePrimeAsync` メソッドに相当する同期メソッドである `CalculatePrime` を作成して、この例を拡張できます。 このようにすると、`PrimeNumberCalculator` コンポーネントはイベント ベースの非同期パターンに完全に準拠するようになります。 - 別のテストの数値のさまざまな呼び出しによって検出されたすべての素数のリストを保持すると、この例を向上できます。 このアプローチを使用して、各タスクは、以前のタスクで行われる作業からメリットがあります。 この一覧を保護するように注意する`lock`領域の場合、別のスレッドでリストへのアクセスがシリアル化されるようにします。 + 異なるテスト対象の数に対するさまざまな呼び出しによって検出されたすべての素数のリストを保持することで、この例を改良できます。 この方法を使うと、各タスクはそれより前のタスクで行われた作業の結果を流用できます。 異なるスレッドによるリストへのアクセスがシリアル化されるように、このリストを `lock` 領域で保護することに注意してください。 - この例は、2、3、5 などの単純な除数のテストによっても向上できます。 + 2、3、5 などの自明の約数をテストすることにより、この例を改良することもできます。 -## 関連項目 +## 参照 [方法: バックグラウンドで操作を実行する](../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md) [イベントベースの非同期パターンの概要](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) - [NOT IN BUILD: Visual Basic でのマルチ スレッド](http://msdn.microsoft.com/en-us/c731a50c-09c1-4468-9646-54c86b75d269) + [ビルド内にありません: Visual Basic でのマルチスレッド](http://msdn.microsoft.com/library/c731a50c-09c1-4468-9646-54c86b75d269) [方法: イベントベースの非同期パターンをサポートするコンポーネントを実装する](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md) [イベント ベースの非同期パターンを使用したマルチスレッド プログラミング](../../../docs/standard/asynchronous-programming-patterns/multithreaded-programming-with-the-event-based-asynchronous-pattern.md) diff --git a/docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md index feb03ce2167..cdddd15170a 100644 --- a/docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md +++ b/docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md @@ -15,32 +15,35 @@ helpviewer_keywords: - Task-based Asynchronous Pattern, .NET Framework support for - .NET Framework, asynchronous design patterns ms.assetid: 033cf871-ae24-433d-8939-7a3793e547bf -caps.latest.revision: "15" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 90b2a36f0e6bf06b0fefe2191d5b17c9c07d1588 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3eddf8899863b7f1c59950c9cd4fa4d42f7acdb7 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # タスク ベースの非同期パターンの利用 -タスク ベースの非同期パターン (TAP) を使用して非同期操作を行うと、コールバックを使用して、ブロックすることなく待機できます。 タスクについては、これは、メソッドによってなどです。 言語ベースの非同期サポートが、通常の制御フロー内での非同期操作の待機を許可することで、コールバックを隠し、コンパイラにより生成されたコードはこの同じ API レベルのサポートを提供します。 +タスク ベースの非同期パターン (TAP) を使用して非同期操作を行うと、コールバックを使用して、ブロックすることなく待機できます。 タスクの場合、これは などのメソッドによって行われます。 言語ベースの非同期サポートが、通常の制御フロー内での非同期操作の待機を許可することで、コールバックを隠し、コンパイラにより生成されたコードはこの同じ API レベルのサポートを提供します。 ## Await による実行の中断 - 以降で、 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)]、使用することができます、 [await](~/docs/csharp/language-reference/keywords/await.md)キーワード (C#) および[Await 演算子](~/docs/visual-basic/language-reference/operators/await-operator.md)を非同期的に待機する Visual Basic でオブジェクト。 待機しているときに、 、`await`式の型は`void`します。 待機しているときに、 、`await`式の型は`TResult`します。 `await` 式は、非同期メソッドの本体内に含める必要があります。 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] における C# および Visual Basic の言語サポートの詳細については、C# および Visual Basic の言語仕様を参照してください。 + [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] 以降では、C# の [await](~/docs/csharp/language-reference/keywords/await.md) キーワードおよび Visual Basic の [Await 演算子](~/docs/visual-basic/language-reference/operators/await-operator.md)を使用して オブジェクトと オブジェクトを非同期に待機できます。 を待っているとき、`await` 式は型 `void` になります。 を待っているとき、`await` 式は型 `TResult` になります。 `await` 式は、非同期メソッドの本体内に含める必要があります。 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] における C# および Visual Basic の言語サポートの詳細については、C# および Visual Basic の言語仕様を参照してください。 - 待機機能は、隠れた状態で継続を使用してタスクにコールバックをインストールします。 このコールバックは中断ポイントから非同期メソッドを再開します。 非同期のメソッドが再開されたときに、待機中の操作が正常に完了された場合、 、その`TResult`が返されます。 場合、またはで終了を待機するが、 、状態、例外がスローされます。 場合、またはで終了を待機するが、状態にある場合にエラーの原因となった例外がスローされます。 `Task` は複数の例外の結果としてエラーになることがありますが、反映されるのはこれらの例外の中の 1 つのみです。 ただし、プロパティから返される、例外は、すべてのエラーが含まれています。 + 待機機能は、隠れた状態で継続を使用してタスクにコールバックをインストールします。 このコールバックは中断ポイントから非同期メソッドを再開します。 非同期メソッドが再開され、待機していた操作が正常に完了し、 であった場合に、その `TResult` が返されます。 待っていた または 状態で終わった場合、 例外がスローされます。 待っていた または 状態で終わった場合、エラーの原因となった例外がスローされます。 `Task` は複数の例外の結果としてエラーになることがありますが、反映されるのはこれらの例外の中の 1 つのみです。 ただし、 プロパティは、すべてのエラーが含まれる 例外を返します。 - 場合、同期コンテキスト (オブジェクト) の中断時に、非同期メソッドが実行しているスレッドに関連付けられて (場合など、プロパティは使用されません`null`)、非同期のメソッドが再開します。コンテキストを使用して、同じ同期コンテキストメソッドです。 それ以外の場合、依存タスク スケジューラ (オブジェクト) が現在中断時にします。 通常、これは既定のタスク スケジューラ ()、スレッド プールを対象とします。 このタスク スケジューラによって、待機していた非同期操作が完了した場合に再開するかどうか、または再開のスケジュールを設定するかどうかが決定されます。 既定のスケジューラは、通常、待機していた操作が完了したスレッド上での実行の継続を許可します。 + 中断時に非同期メソッドを実行したスレッドに同期コンテキスト ( オブジェクト) が関連付けられている場合 ( プロパティが `null` ではないなど)、非同期メソッドは、コンテキストの メソッドを利用し、その同じ同期コンテキストで再開します。 そのように関連付けられていない場合、中断時に実行されていたタスク スケジューラ ( オブジェクト) に基づきます。 通常、これは既定のタスク スケジューラ () であり、スレッド プールをターゲットにします。 このタスク スケジューラによって、待機していた非同期操作が完了した場合に再開するかどうか、または再開のスケジュールを設定するかどうかが決定されます。 既定のスケジューラは、通常、待機していた操作が完了したスレッド上での実行の継続を許可します。 - 非同期メソッドが呼び出された場合、まだ完了していない待機可能なインスタンスの最初の await 式まで、関数の本体を同期をとって実行し、この時点で呼び出しを呼び出し元に返します。 非同期のメソッドが返されなかった場合`void`、またはを継続的な計算を表すオブジェクトが返されます。 非 void の非同期メソッドに return ステートメントが発生したか、またはメソッド本体の末尾に達した場合、タスクの完了で、最終的な状態です。 未処理の例外では、コントロールを非同期メソッドの本体外に出すとの終了、状態です。 その例外がある場合、 、タスクの代わりに終了日、状態です。 この方法では、結果または例外が最終的に発行されます。 + 非同期メソッドが呼び出された場合、まだ完了していない待機可能なインスタンスの最初の await 式まで、関数の本体を同期をとって実行し、この時点で呼び出しを呼び出し元に返します。 非同期メソッドが `void` を返さない場合、進行中の計算を表す または オブジェクトが返されます。 void 以外の非同期メソッドでは、return ステートメントが検出された場合、またはメソッド本体の末尾に到達した場合、タスクが の終了状態で完了します。 ハンドルされない例外により、非同期メソッドの本体から制御が離れた場合、タスクは 状態になります。 その例外が の場合、タスクは代わりに 状態で終わります。 この方法では、結果または例外が最終的に発行されます。 この動作には、いくつかの重要なバリエーションがあります。 タスクが待機されるまでに既に完了していた場合は、パフォーマンス上の理由から、制御が明け渡されず、関数が実行を継続します。 また、元のコンテキストに戻ることが必ずしも望ましい動作ではない場合は変更されることがあります。これは、次のセクションで詳しく説明します。 ### Yield と ConfigureAwait を使用して中断と再開を構成する - 一部のメソッドでは、非同期メソッドの実行をより詳細に制御できます。 たとえば、使用することができます、非同期メソッドに、徐行を表すポイントを導入する方法。 + 一部のメソッドでは、非同期メソッドの実行をより詳細に制御できます。 たとえば、 メソッドを使用し、yield ポイントを非同期メソッドに伝えることができます。 ```csharp public class Task : … @@ -63,16 +66,16 @@ Task.Run(async delegate }); ``` - 使用することも、を中断および再開する非同期メソッドでより細かく制御メソッド。 再開時に非同期メソッドの継続を呼び出すために非同期メソッドが中断され、そのキャプチャされたコンテキストが使用されている場合、既定では、既に説明したように現在のコンテキストがキャプチャされます。 これは、多くの場合に求められる動作です。 その他の場合では、継続のコンテキストが重要でないこともあり、元のコンテキストへのポスト バックを回避することでパフォーマンスを向上できます。 これを有効にするには、にキャプチャし、コンテキストの再開はなく、実行を継続する待機対象が非同期の操作が完了した場所に、await 操作を通知します。 + メソッドを使用することもできます。非同期メソッドでの中断と再開でより優れた制御機能が与えられます。 再開時に非同期メソッドの継続を呼び出すために非同期メソッドが中断され、そのキャプチャされたコンテキストが使用されている場合、既定では、既に説明したように現在のコンテキストがキャプチャされます。 これは、多くの場合に求められる動作です。 その他の場合では、継続のコンテキストが重要でないこともあり、元のコンテキストへのポスト バックを回避することでパフォーマンスを向上できます。 そのためには、 メソッドを使用して、待機操作にコンテキストをキャプチャして再開するのではなく、待機していた非同期操作がどこで完了したかを問わず、実行を継続するように指示できます。 ```csharp await someTask.ConfigureAwait(continueOnCapturedContext:false); ``` ## 非同期操作の取り消し - 以降で、 [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]、キャンセルをサポートする TAP メソッドは、キャンセル トークンを受け入れるには、少なくとも 1 つのオーバー ロードを提供 (オブジェクト)。 + [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、取り消しをサポートする TAP メソッドは、キャンセル トークン ( オブジェクト) を受け取るオーバーロードを少なくとも 1 つ用意します。 - キャンセル トークンが、キャンセル トークン ソースを作成 (オブジェクト)。 ソースのプロパティには、通知されるキャンセル トークンが返されます。 ときに、ソースのメソッドが呼び出されます。 たとえば、1 つの web ページをダウンロードする場合、操作を取り消すことができるを作成する、オブジェクト、TAP メソッドにそのトークンを渡すし、ソースを呼び出す操作をキャンセルする準備ができたら、メソッド。 + キャンセル トークンは、キャンセル トークンのソース ( オブジェクト) によって作成されます。 ソースの プロパティがキャンセル トークンを返します。ソースの メソッドが呼び出されたとき、このトークンに信号が送られます。 たとえば、単一の Web ページをダウンロードする際に操作を取り消せるようにする場合は、 オブジェクトを作成し、TAP メソッドにそのオブジェクトのトークンを渡し、操作を取り消す準備ができたらソースの メソッドを呼び出します。 ```csharp var cts = new CancellationTokenSource(); @@ -103,7 +106,7 @@ var cts = new CancellationTokenSource(); 取り消し要求は任意のスレッドから開始することができます。 - 渡すことができます、取り消しが要求しないことを示すためにキャンセル トークンを受け入れるメソッドにする値。 これにより、を返すプロパティ`false`、し、それに応じて、呼び出されたメソッドを最適化できます。 テストのためには、トークンが既に取り消された状態か取り消し不可能な状態で開始するかどうかを示すブール値を受け取るコンストラクターを使用してインスタンス化した、事前に取り消されたキャンセル トークンを渡すこともできます。 + 取り消しが要求されないことを示すために、キャンセル トークンを受け取るすべてのメソッドに 値を渡すことができます。 これで プロパティが `false` を返します。呼び出されたメソッドは適宜最適化できます。 テストのためには、トークンが既に取り消された状態か取り消し不可能な状態で開始するかどうかを示すブール値を受け取るコンストラクターを使用してインスタンス化した、事前に取り消されたキャンセル トークンを渡すこともできます。 この取り消し方法には、いくつか利点があります。 @@ -133,10 +136,10 @@ private async void btnDownload_Click(object sender, RoutedEventArgs e) ## タスク ベースの組み込み連結子の使用 - 名前空間には、作成するタスクを操作するためのいくつかのメソッドが含まれています。 + 名前空間には、タスクを構成および使用するための複数のメソッドがあります。 ### Task.Run - クラスが含まれる簡単にするためのメソッドとしての作業をオフロードする、または例については、スレッド プールに。 + クラスには、 メソッドがいくつか含まれています。このメソッドでは、次のように、 のような作業の負荷をスレッド プールに簡単に移すことができます。 ```csharp public async void button1_Click(object sender, EventArgs e) @@ -149,7 +152,7 @@ public async void button1_Click(object sender, EventArgs e) } ``` - これらのいくつかメソッドなど、オーバー ロードする、短縮形として存在している、メソッドです。 などの他の overloads 、たとえばオフロードの作業内 await を使用することで有効にする。 + オーバーロードなど、これらの メソッドの一部は メソッドの短縮形として存在します。 など、他のオーバーロードでは、次のように、負荷分散される作業内で await を使用できます。 ```csharp public async void button1_Click(object sender, EventArgs e) @@ -163,10 +166,10 @@ public async void button1_Click(object sender, EventArgs e) } ``` - このようなオーバー ロードを使用してに論理的に等価、メソッドと組み合わせて、タスク並列ライブラリでも拡張メソッド。 + このようなオーバーロードは論理的に、タスク並列ライブラリの 拡張メソッドとの連動で メソッドを使用することと等しくなります。 ### Task.FromResult - 使用して、データことが既にある使用可能かつだけのシナリオでメソッドをクラスに退避タスクを返すメソッドから返される必要があります、 : + データが既に利用でき、単に にリフトされたタスクを返すメソッドから返す必要があるシナリオでは、 メソッドを使用します。 ```csharp public Task GetValueAsync(string key) @@ -184,7 +187,7 @@ private async Task GetValueAsyncInternal(string key) ``` ### Task.WhenAll - 使用して、メソッドがタスクとして表される非同期操作を複数の非同期的に待機します。 メソッドには、一連の非ジェネリック タスクまたは不均一な一連のジェネリック タスク (複数の void を返す操作を非同期に待機したり、各値の型が異なる複数の値を返すメソッドを非同期に待機するなど) に加えて、均一な一連のジェネリック タスク (複数の `TResult` を返すメソッドを非同期に待機するなど) をサポートする複数のオーバーロードが含まれます。 + メソッドは、タスクとして表される複数の非同期操作で非同期に待機するために使用されます。 メソッドには、一連の非ジェネリック タスクまたは不均一な一連のジェネリック タスク (複数の void を返す操作を非同期に待機したり、各値の型が異なる複数の値を返すメソッドを非同期に待機するなど) に加えて、均一な一連のジェネリック タスク (複数の `TResult` を返すメソッドを非同期に待機するなど) をサポートする複数のオーバーロードが含まれます。 複数の顧客に電子メール メッセージを送信するとします。 このような場合、1 つのメッセージの送信完了を待たずに次のメッセージを送信するような、メッセージのオーバーラップ送信が可能です。 送信操作がいつ完了したか、またエラーが発生したかを確認することもできます。 @@ -193,7 +196,7 @@ IEnumerable asyncOps = from addr in addrs select SendMailAsync(addr); await Task.WhenAll(asyncOps); ``` - このコードは、例外が発生するが、例外の伝達されることができますを処理しない明示的に、`await`から結果のタスクでです。 例外を処理するには、次のようなコードを使用できます。 + このコードは発生する可能性がある例外を明示的に処理せず、 の結果のタスクの `await` から例外を反映します。 例外を処理するには、次のようなコードを使用できます。 ```csharp IEnumerable asyncOps = from addr in addrs select SendMailAsync(addr); @@ -207,7 +210,7 @@ catch(Exception exc) } ``` - この例では、非同期操作が失敗した場合、すべての例外はで統合、に格納されている例外、から返された、メソッドです。 ただし、これらの例外の 1 つだけが `await` キーワードによって反映されます。 すべての例外を調べる場合は、上記のコードを次のように書き直します。 + この例では、非同期の操作が失敗した場合、すべての例外が 例外で連結され、 メソッドから返される に格納されます。 ただし、これらの例外の 1 つだけが `await` キーワードによって反映されます。 すべての例外を調べる場合は、上記のコードを次のように書き直します。 ```csharp Task [] asyncOps = (from addr in addrs select SendMailAsync(addr)).ToArray(); @@ -251,7 +254,7 @@ catch(Exception exc) ``` ### Task.WhenAny - 使用することができます、複数の非同期操作の 1 つの非同期的に待機するメソッドが完了するタスクとして表されます。 このメソッドは、次の 4 つの主なユース ケースで役立ちます。 + メソッドを使用して、完了するタスクとして表される複数の非同期操作の 1 つのみを非同期に待機できます。 このメソッドは、次の 4 つの主なユース ケースで役立ちます。 - 冗長性: 1 つの操作を複数回実行し、最初に完了したものを選択する (たとえば、1 つの結果を生成する複数の株価情報 Web サービスに問い合わせて、最も速く完了したものを選択する)。 @@ -259,10 +262,10 @@ catch(Exception exc) - 調整: 他の操作が完了したら追加の操作を開始できるようにする。 これは、インターリーブのシナリオを拡張したものです。 -- 初期の保留: でなどにタスク t1 で表される操作をグループ化することができます、で別のタスク t2 とするタスクが待機できる、タスク。 タスク t2 は、タイムアウト、またはキャンセル、または原因となるその他のいくつかの信号を表すことが、 t1 が完了する前に完了するタスク。 +- 初期のエスケープ: たとえば、タスク t1 が表す操作を別のタスク t2 と共に タスクでグループにまとめ、 タスクで待機できます。 タスク t2 は、タイムアウトか取り消し、または タスクを t1 の前に完了するようなその他のシグナルを表す場合があります。 #### 冗長性 - 株式を購入するかどうかを決定するとします。 信頼できるいくつかの株式推薦 Web サービスがありますが、日常的な負荷によっては、時に応じて各サービスがかなり遅くなることがあります。 使用することができます、任意の操作が完了したら、通知を受信するメソッド。 + 株式を購入するかどうかを決定するとします。 信頼できるいくつかの株式推薦 Web サービスがありますが、日常的な負荷によっては、時に応じて各サービスがかなり遅くなることがあります。 メソッドを使用すると、いずれかの操作が完了したときに通知を受け取ることができます。 ```csharp var recommendations = new List>() @@ -275,9 +278,9 @@ Task recommendation = await Task.WhenAny(recommendations); if (await recommendation) BuyStock(symbol); ``` - 異なり、正常に完了しているすべてのタスクのラップ解除された結果が返されます完了タスクを返します。 タスクが失敗した場合は、それを把握することが重要です。タスクが成功した場合は、戻り値が関連付けられているタスクを把握することが重要です。 そのため、この例で示すように、返されるタスクの結果にアクセスするか、引き続き待機する必要があります。 + 正常に完了したすべてのタスクの結果をラップせずに返す とは異なり、 は完了したタスクを返します。 タスクが失敗した場合は、それを把握することが重要です。タスクが成功した場合は、戻り値が関連付けられているタスクを把握することが重要です。 そのため、この例で示すように、返されるタスクの結果にアクセスするか、引き続き待機する必要があります。 - 同様に例外に対応することができる必要があります。 完了したタスクを受け取るので、適切に `try/catch` で囲んで、エラーが反映されて返されるタスクを待機できます。次に例を示します。 + と同様に、例外に対応できる必要があります。 完了したタスクを受け取るので、適切に `try/catch` で囲んで、エラーが反映されて返されるタスクを待機できます。次に例を示します。 ```csharp Task [] recommendations = …; @@ -296,7 +299,7 @@ while(recommendations.Count > 0) } ``` - さらに、最初のタスクが正常に完了しても、以降のタスクが失敗する可能性があります。 この時点では、例外を処理するためのいくつかのオプションがある: 使用する場合、起動されたすべてのタスクが完了するまでに待機することができます、メソッド、またはするは、すべての例外が重要で、ログインする必要があるを決定できます。 そのためには、継続を使用してタスクが非同期に完了した時点で通知を受け取ることができます。 + さらに、最初のタスクが正常に完了しても、以降のタスクが失敗する可能性があります。 この時点で、例外を処理する方法はいくつかあります。起動したすべてのタスクが完了するまで待機できます。その場合は、 メソッドを使用するか、すべての例外が重要であり、ログに記録する必要があると指定できます。 そのためには、継続を使用してタスクが非同期に完了した時点で通知を受け取ることができます。 ```csharp foreach(Task recommendation in recommendations) @@ -367,7 +370,7 @@ while(imageTasks.Count > 0) } ``` - 負荷の高い処理を行うシナリオをインターリーブを適用することも、ダウンロードしたイメージの; 例。 + 次のように、ダウンロードしたイメージの でコンピューター処理を集中して行うことが必要になるシナリオでも、インターリーブを適用できます。 ```csharp List> imageTasks = @@ -482,12 +485,12 @@ public async void btnRun_Click(object sender, EventArgs e) } ``` - 初期の保留の別の例を使用して、メソッドと組み合わせて、メソッドを次のセクションで説明したようにします。 + 初期のエスケープのもう 1 つの例では、次のセクションで説明する メソッドと連動で メソッドを使用します。 ### Task.Delay - 使用することができます、を導入するメソッドが非同期メソッドの実行を一時停止します。 これは、ポーリング ループのビルド、あらかじめ指定された期間にわたるユーザー入力処理の遅延など、さまざまな機能に役立ちます。 メソッドにも役立ちますと組み合わせての待機のタイムアウトを実装します。 + メソッドを使用し、非同期メソッドの実行を一時停止できます。 これは、ポーリング ループのビルド、あらかじめ指定された期間にわたるユーザー入力処理の遅延など、さまざまな機能に役立ちます。 メソッドは、 との連動で使用し、待機にタイムアウトを実装する場合にも便利です。 - 大規模な非同期操作 (ASP.NET Web サービスなど) の一部を構成するタスクが完了するまで時間がかかる場合 (特に操作が完了しない場合) には、操作全般に影響が及びます。 そのため、非同期操作の待機をタイムアウトできるようにすることが重要になります。 同期、およびメソッドが、対応するが、タイムアウト値を受け入れる / 前に説明したと / メソッドがありません。 使用する代わりに、を組み合わせると、タイムアウトを実装します。 + 大規模な非同期操作 (ASP.NET Web サービスなど) の一部を構成するタスクが完了するまで時間がかかる場合 (特に操作が完了しない場合) には、操作全般に影響が及びます。 そのため、非同期操作の待機をタイムアウトできるようにすることが重要になります。 同期の メソッドはタイムアウト値を受け取りますが、対応する / と前述の / メソッドは受け取りません。 代わりに、 を併用し、タイムアウトを実装できます。 たとえば、UI アプリケーションで、イメージをダウンロードし、そのダウンロード中は UI を無効にするとします。 ただし、ダウンロードに時間がかかりすぎる場合には、UI を再び有効にしてダウンロードを破棄します。 @@ -516,7 +519,7 @@ public async void btnDownload_Click(object sender, EventArgs e) } ``` - 同じに適用される複数のダウンロードのためタスクを返します。 + 複数のダウンロードにも同じことが当てはまります。次のように、 がタスクを返すためです。 ```csharp public async void btnDownload_Click(object sender, RoutedEventArgs e) @@ -639,7 +642,7 @@ double currentPrice = await NeedOnlyOne( ``` ### インターリーブされた操作 - 使用して潜在的なパフォーマンスの問題がある、タスクの非常に大きなセットを使用している場合、インターリーブのシナリオをサポートするメソッド。 すべての呼び出しに登録されると、各タスクの継続で発生します。 タスクの数を N とすると、インターリーブ操作の有効期間に作成された O (N2) の継続になります。 多数のタスクを使用する場合は、連結子 (次の例の `Interleaved`) を使用してパフォーマンスの問題に対処できます。 + 多数のタスクを使用する際に、インターリーブのシナリオをサポートするために メソッドを使用すると、パフォーマンスの問題が発生することがあります。 を呼び出すたびに、継続が各タスクに登録されます。 タスクの数を N とすると、インターリーブ操作の有効期間に作成された O (N2) の継続になります。 多数のタスクを使用する場合は、連結子 (次の例の `Interleaved`) を使用してパフォーマンスの問題に対処できます。 ```csharp static IEnumerable> Interleaved(IEnumerable> tasks) @@ -703,10 +706,10 @@ public static Task WhenAllOrFirstException(IEnumerable> tasks) ``` ## タスク ベースのデータ構造のビルド - データ構造を持つできるだけでなく、カスタムのタスク ベースの連結子を構築する、非同期操作の両方の結果を表すし、それに参加するために必要な同期では、非常に強力な非同期のシナリオで使用するカスタム データ構造を構築するために入力します。 + カスタム タスク ベースの連結子をビルドする機能に加えて、非同期操作の結果と、結合する必要な同期の両方を表す および 内にデータ構造を配置することで、非同期シナリオに使用するカスタム データ構造をビルドするための非常に強力な型になります。 ### AsyncCache - その結果または例外を取得 1 つのタスクの重要な側面は、そのことがあります配ることで、登録継続 await の可能性があります、複数のコンシューマーに (の場合、 ) のようにします。 これにより、非同期キャッシュ インフラストラクチャで使用するのには最適です。 小規模の例を次に示しますが、強力な非同期キャッシュの上に構築: + タスクの重要な側面の 1 つに、タスクを待機する複数のコンシューマーに渡し、タスクに継続を登録し、その結果または例外を取得できることなどがあります ( の場合)。 これで が非同期キャッシュ インフラストラクチャで使用できるように調整されます。 次に、 上にビルドした小さいながらも強力な非同期キャッシュの例を示します。 ```csharp public class AsyncCache @@ -733,7 +736,7 @@ public class AsyncCache } ``` - [AsyncCache\](http://go.microsoft.com/fwlink/p/?LinkId=251941)を受け取る関数、クラス、コンス トラクターにデリゲートを受け入れる、`TKey`を返します、です。 以前にキャッシュからアクセスした値は内部ディクショナリに格納され、`AsyncCache` によって、キャッシュに同時にアクセスしてもキーごとにタスクが 1 つしか生成されないようにします。 + [AsyncCache\](http://go.microsoft.com/fwlink/p/?LinkId=251941) クラスは、コンストラクターへのデリゲートとして `TKey` を受け取る関数を受け入れ、 を返します。 以前にキャッシュからアクセスした値は内部ディクショナリに格納され、`AsyncCache` によって、キャッシュに同時にアクセスしてもキーごとにタスクが 1 つしか生成されないようにします。 たとえば、次のようにダウンロードされた Web ページのキャッシュをビルドできます。 @@ -818,7 +821,7 @@ private static void Produce(int data) } ``` - 名前空間が含まれています、型で、カスタム コレクション型を構築する必要はありませんが、同様の方法で行うこともできます。 + 名前空間には 型が含まれます。これは同様に使用できますが、カスタムのコレクション型をビルドする必要はありません。 ```csharp private static BufferBlock m_data = …; @@ -839,9 +842,9 @@ private static void Produce(int data) ``` > [!NOTE] -> 名前空間で使用できる、[!INCLUDE[net_v45](../../../includes/net-v45-md.md)]を通じて**NuGet**です。 含むアセンブリをインストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**から、[プロジェクト] メニューのし、Microsoft.Tpl.Dataflow パッケージをオンライン検索します。 +> 名前空間は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] にあります。**NuGet** を利用してください。 名前空間が含まれるアセンブリをインストールするには、[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)] でプロジェクトを開き、[プロジェクト] メニューの **[Manage NuGet Packages]** を選択し、Microsoft.Tpl.Dataflow パッケージをオンライン検索します。 -## 関連項目 +## 参照 [タスク ベースの非同期パターン (TAP)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md) [タスク ベースの非同期パターンの実装](../../../docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md) [他の非同期パターンと型との相互運用](../../../docs/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types.md) diff --git a/docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md index c99e493927b..6ca2db6f5ab 100644 --- a/docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md +++ b/docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md @@ -18,78 +18,81 @@ helpviewer_keywords: - AsyncOperation class - AsyncCompletedEventArgs class ms.assetid: a00046aa-785d-4f7f-a8e5-d06475ea50da -caps.latest.revision: "8" +caps.latest.revision: author: dotnet-bot ms.author: dotnetcontent manager: wpickett -ms.openlocfilehash: 48de1b736c251a61a2ad34975c77bc2bca139626 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 111aaaa86877368ccbd0c9c11a26dff47b065698 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # イベントベースの非同期パターンをいつ実装するかの決定 -イベント ベースの非同期パターンは、クラスの非同期動作を公開するため、パターンを提供します。 このパターンの導入に伴い、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)]非同期動作を公開するための 2 つのパターンを定義します: 非同期パターンがに基づいて、インターフェイス、およびイベント ベースのパターン。 このトピックが両方のパターンを実装するための適切な場合について説明します。 +イベント ベースの非同期パターンは、クラスの非同期動作を公開します。 このパターンを導入すると、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] では、非同期動作を公開する 2 つのパターンが定義されます。 インターフェイスに基づく非同期パターンとイベント ベースのパターンです。 このトピックでは、両方のパターンをどのような状況で実装するべきか説明します。 - 使用した非同期プログラミングの詳細については、インターフェイスを参照してください[イベント ベースの非同期パターン (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md)です。 + インターフェイスによる非同期プログラミングの詳細については、「[イベント ベースの非同期パターン (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md)」を参照してください。 ## 一般原則 - 一般に、- イベント ベースの非同期パターンが使用可能な限り非同期機能を公開する必要があります。 ただし、いくつかの要件を満たしていないイベント ベースのパターンがあります。 その場合を実装する必要があります、イベント ベースのパターンに加えてパターン。 + 一般的に、可能であれば、イベント ベースの非同期パターンを利用して非同期機能を公開してください。 ただし、イベント ベースのパターンでは満たせない要件もあります。 そのようなとき、場合によっては、イベント ベースのパターンに加え、 パターンも実装する必要があります。 > [!NOTE] -> これはまれであるため、も実装されているイベントに基づくパターンせずに実装するパターン。 +> イベント ベースのパターンを実装せずに パターンのみを実装することはまれです。 ## ガイドライン - 次に、イベント ベースの非同期パターンを実装する場合のガイドラインを説明します。 + 次の一覧は、イベント ベースの非同期パターンを実装するときのガイドラインをまとめたものです。 -- 既定 API とイベント ベースのパターンを使用して、クラスの非同期動作を公開します。 +- 既定の API としてイベント ベースのパターンを使用し、クラスの非同期動作を公開します。 -- 公開しない、パターンをクラスは、主に、クライアント アプリケーションで Windows フォームなどの使用時にします。 +- クラスが主に、Windows フォームなど、クライアント アプリケーションで使用されるとき、 パターンを公開しないでください。 -- だけを公開、パターンを要件を満たすために必要な場合です。 たとえば、既存の API との互換性が必要がありますを公開する、パターン。 +- 要件を満たすために必要なときにのみ、 パターンを公開します。 たとえば、既存の API との互換性を得るために パターンを公開する必要がある場合です。 -- 公開しない、イベント ベースのパターンを公開せずパターン。 +- パターンを公開するときは、イベント ベースのパターンも公開してください。 -- 必要がありますを公開する場合、パターンは、高度なオプションとして。 たとえば、プロキシ オブジェクトを生成する場合、このイベント ベースのパターンを既定では、生成するオプションが生成、パターン。 +- パターンを公開する必要がある場合、詳細設定のオプションとしてそれを行います。 たとえば、プロキシ オブジェクトを生成する場合、既定でイベント ベースのパターンを生成し、 パターンを生成するオプションを指定します。 -- イベント ベースのパターンの実装の構築、パターンの実装です。 +- パターンの実装を基盤にしてイベント ベースのパターンを実装します。 -- 両方のイベント ベースのパターンを公開しないように、パターンは、同じクラスです。 「高レベル」のクラスでイベント ベースのパターンを公開し、パターンの「レベルを下げる」クラスです。 たとえば、イベント ベースのパターンと比較、コンポーネントをのパターン、クラスです。 +- 同じクラスでイベント ベースのパターンと パターンの両方を公開することは避けます。 イベント ベースのパターンを "上位" クラスで公開し、 パターンを "下位" クラスで公開します。 たとえば、 コンポーネントのイベント ベースのパターンと クラスの パターンを比較します。 - - イベント ベースのパターンを公開し、パターンは、互換性が必要とするときに、同じクラスです。 たとえばを使用する API が既に解放されている場合、パターンでは、保持する必要は、旧バージョンとの互換性のためのパターン。 + - 互換性のために必要なとき、イベント ベースのパターンと パターンを同じクラスで公開します。 たとえば、 パターンを使用する API を既に公開している場合、後方互換性のために パターンを維持する必要があります。 - - イベント ベースのパターンを公開し、オブジェクト モデルの結果として得られる複雑性が、実装を分離することの利点を上回る場合に、同じクラスのパターンします。 イベント ベースのパターンを公開することを避けるよりも 1 つのクラスで両方のパターンを公開することをお勧めします。 + - 最終的なオブジェクト モデルが複雑すぎて実装を分ける意味がなくなってしまう場合、イベント ベースのパターンと パターンを同じクラスで公開します。 イベント ベースのパターンを公開することを避けるより、1 つのクラスで両方のパターンを公開するほうが得策です。 - - 両方のイベント ベースのパターンを公開する必要がある場合とパターンは、1 つのクラスを使用してに設定をマークする、高度な機能としてのパターンの実装です。 など、デザイン環境に示すこの[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)]を表示しないように、IntelliSense、プロパティとメソッド。 これらのプロパティとメソッドが完全に使用可能ではまだが IntelliSense によって、開発者が API の鮮明に表示します。 + - イベント ベースのパターンと パターンを 1 つのクラスで公開する必要がある場合、 に設定された を使用し、 パターンの実装を高度な機能として設定します。 これで [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] IntelliSense のようなデザイン環境に、 のプロパティやメソッドを表示しないように指示されます。 これらのプロパティとメソッドには完全な有用性がまだ与えられていませんが、IntelliSense で開発している開発者は API を詳しく理解できます。 -## イベント ベースのパターンに加えて IAsyncResult パターンを公開するための条件 - イベント ベースの非同期パターンには、前述のシナリオで多くの利点がありますがいくつかの欠点は、パフォーマンスが最も重要な要件である場合に注意してください。 +## イベント ベースのパターンに加え、IAsyncResult パターンを公開する基準 + 前述のシナリオではイベント ベースの非同期パターンにさまざまな長所がありましたが、短所もあります。パフォーマンスが最も重要な要件であれば、その短所も考慮してください。 - イベント ベースのパターンでは取り上げませんが 3 つのシナリオはだけでなく、パターン。 + イベント ベースのパターンで パターンも対処されないシナリオが 3 つあります。 -- 1 つで待機をブロック +- 1 つの に対する待機をブロックする -- 多くの待機をブロックしてオブジェクト +- たくさんの オブジェクトに対する待機をブロックする -- 完了のポーリング、 +- の完了に対するポーリング - イベント ベースのパターンを使用して、こうしたシナリオに対処することができますが、これは、使用するよりも煩雑、パターン。 + 以上のシナリオには、イベント ベースのパターンで対処できますが、 パターンを使用する場合より面倒になります。 - 開発者は多くの場合、使用して、通常非常に高いパフォーマンスの要件を設定しているサービスのパターン。 たとえば、完了のシナリオのポーリングは、高パフォーマンス サーバー手法です。 + 開発者は多くの場合、一般的にパフォーマンス要件が非常に高いサービスに パターンを使用します。 たとえば、完了のポーリング シナリオに該当するのが高性能サーバーを利用するときです。 - さらに、イベント ベースのパターンより効率が下がります、特に複数のオブジェクトを作成するためのパターンを、およびスレッド間で同期するためです。 + また、イベント ベースのパターンは パターンと比べて効率性が劣ります。作成されるオブジェクトが多く (特に )、スレッド間で同期がとられるためです。 - 次の一覧を使用する場合に実行する推奨事項を示しています、パターン。 + 次の一覧は、 パターンを使用する場合の推奨事項をいくつか取り上げたものです。 -- だけを公開、のサポートを特に必要とするときのパターンをまたはオブジェクト。 +- または オブジェクトのサポートが厳密に必要な場合にのみ パターンを公開します。 -- だけを公開、パターンを使用する既存の API がある場合、パターン。 +- 既存の API で パターンを使用している場合にのみ パターンを公開します。 -- 基づく既存の API がある場合、パターンも、イベント ベースのパターンで、次のリリースで公開することを検討してください。 +- 既存の API が パターンに基づく場合、次のリリースでイベント ベースのパターンも公開することを検討します。 -- だけを公開パターンを確認する高パフォーマンスの要件がある場合は、イベント ベースのパターンで満たすことができませんが、によって満たすことができます、パターン。 +- 検証済みの高いパフォーマンス要件がイベント ベースのパターンでは満たせないが、 パターンでは満たせる場合にのみ、 パターンを公開します。 -## 関連項目 +## 参照 [チュートリアル: イベントベースの非同期パターンをサポートするコンポーネントの実装](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md) [イベント ベースの非同期パターン (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) [イベント ベースの非同期パターンを使用したマルチスレッド プログラミング](../../../docs/standard/asynchronous-programming-patterns/multithreaded-programming-with-the-event-based-asynchronous-pattern.md) diff --git a/docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md b/docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md index b74437976eb..edf9e1d2216 100644 --- a/docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md +++ b/docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md @@ -22,15 +22,18 @@ helpviewer_keywords: - AsyncOperation class - AsyncCompletedEventArgs class ms.assetid: 792aa8da-918b-458e-b154-9836b97735f3 -caps.latest.revision: "19" +caps.latest.revision: author: dotnet-bot ms.author: dotnetcontent manager: wpickett -ms.openlocfilehash: 61efa26db0f416c56691399779d15310457ce483 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: efe136ceb87213c5f9911b24a8a522b29a37b384 +ms.sourcegitcommit: 957c696f25e39f923a827fc3ad5e8ab72768838c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/13/2018 --- # イベントベースの非同期パターンの概要 多数のタスクを同時に実行しながら、ユーザーの操作にも応答するアプリケーションには、通常、複数のスレッドを使用するデザインが必要です。 名前空間は、高性能なマルチスレッド アプリケーションを作成するのに必要なすべてのツールを提供します。ただし、これらのツールを効果的に使用するには、マルチスレッド ソフトウェア エンジニアリングの豊富な経験が必要です。 比較的単純なマルチスレッド アプリケーションの場合は、 コンポーネントが簡単なソリューションを提供します。 より高度な非同期アプリケーションの場合は、イベント ベースの非同期パターンに準拠したクラスの実装を検討してください。 @@ -43,9 +46,9 @@ ms.lasthandoff: 11/21/2017 - アプリケーションを停止 ("ハングアップ") せずに、リソースが使用可能な状態になるまで待機できます。 -- 使い慣れたイベントおよびデリゲートのモデルを使用して、保留中の非同期操作と通信できます。 イベント ハンドラーとバリアント汎用デリゲートを使用する方法については、次を参照してください。[イベント](../../../docs/standard/events/index.md)です。 +- 使い慣れたイベントおよびデリゲートのモデルを使用して、保留中の非同期操作と通信できます。 イベント ハンドラーおよびデリゲートの使い方の詳細については、[イベント](../../../docs/standard/events/index.md)に関するページを参照してください。 - イベント ベースの非同期パターンをサポートするクラスには、という 1 つまたは複数のメソッドがあります*MethodName*`Async`です。 これらのメソッドは、同期バージョンに対応するもので、現在のスレッドで同じ操作を行います。 クラスがあります、 *MethodName* `Completed`イベントとその可能性がありますが、 *MethodName* `AsyncCancel` (または単に`CancelAsync`) メソッドです。 + イベント ベースの非同期パターンをサポートするクラスには、*MethodName***Async** という名前のメソッドが 1 つ以上含まれます。これらのメソッドは、同期バージョンに対応するもので、現在のスレッドで同じ操作を行います。クラスには、*MethodName***Completed** イベントや *MethodName***AsyncCancel** (または単に **CancelAsync**) メソッドが含まれる場合もあります。 は、イベント ベースの非同期パターンをサポートする一般的なコンポーネントです。 イメージを同期的にダウンロードするには、その メソッドを呼び出します。ただし、イメージのサイズが大きい場合や、ネットワークの接続速度が遅い場合は、ダウンロード操作が完了して の呼び出しから戻るまで、アプリケーションが停止 ("ハングアップ") します。 @@ -54,10 +57,10 @@ ms.lasthandoff: 11/21/2017 イベント ベースの非同期パターンでは、非同期操作をキャンセルできる必要があります。 コントロールでは、その メソッドでこの要件をサポートしています。 を呼び出すと、保留中のダウンロードを停止する要求が送信されます。タスクがキャンセルされると、 イベントが発生します。 > [!CAUTION] -> 要求が作成されると同時に、ダウンロードが終了する可能性もあります。このような場合、 にはキャンセルの要求が反映されません。 これと呼ばれる、*競合状態*であり、マルチ スレッド プログラミングの一般的な問題です。 マルチ スレッド プログラミングの問題の詳細については、次を参照してください。[マネージ スレッド処理の実施](../../../docs/standard/threading/managed-threading-best-practices.md)です。 +> 要求が作成されると同時に、ダウンロードが終了する可能性もあります。このような場合、 にはキャンセルの要求が反映されません。 これは*競合状態*と呼ばれる、マルチスレッド プログラミングの一般的な問題です。 マルチスレッド プログラミングの問題の詳細については、「[Managed Threading Best Practices](../../../docs/standard/threading/managed-threading-best-practices.md)」 (管理されたスレッドのベスト プラクティス) を参照してください。 ## イベント ベースの非同期パターンの特性 - イベント ベースの非同期パターンには、特定のクラスでサポートされている操作の複雑さに応じて、複数の形式があります。 最も単純なクラスが 1 つあります*MethodName* `Async`メソッドと、対応する*MethodName* `Completed`イベント。 複雑なクラスがいくつかあります*MethodName* `Async`メソッドと、それぞれに対応する*MethodName* `Completed`イベントだけでなくこれらのメソッドの同期バージョンに対応します。 クラスでは、各非同期メソッドの、キャンセル、進行状況のレポート、およびインクリメンタル結果をオプションでサポートできます。 + イベント ベースの非同期パターンには、特定のクラスでサポートされている操作の複雑さに応じて、複数の形式があります。 最もシンプルなクラスには、単一の *MethodName***Async** メソッドと、このメソッドに対応する *MethodName***Completed** イベントが含まれる場合があります。 より複雑なクラスには、複数の *MethodName***Async** メソッドと、それぞれに対応する *MethodName***Completed** イベント、およびこれらのメソッドの同期バージョンが含まれる場合があります。 クラスでは、各非同期メソッドの、キャンセル、進行状況のレポート、およびインクリメンタル結果をオプションでサポートできます。 また、非同期メソッドでは複数の保留中の呼び出し (複数の同時呼び出し) をサポートして、他の保留中の操作が完了するまで、コードを何度も呼び出せるようにできます。 このような状況を適切に処理するには、アプリケーションで各操作の完了を追跡する必要があります。 @@ -118,29 +121,29 @@ public class AsyncExample ### 非同期メソッドのオーバーロード 非同期操作には、基本的に単一呼び出しと複数呼び出しの 2 つのオーバーロードがあります。 これら 2 つの形式はそのメソッド シグネチャで区別できます。複数呼び出しの形式には、`userState` という名前の追加のパラメーターがあります。 この形式を使用すると、保留中の非同期操作が完了するのを待たずに、コードで `Method1Async(string param, object userState)` を複数回呼び出すことができます。 一方、直前の呼び出しが完了する前に `Method1Async(string param)` を呼び出そうとすると、メソッドにより が発生します。 - 複数呼び出しのオーバーロードの `userState` パラメーターにより、非同期操作を区別できます。 呼び出しごとに一意な値 (たとえば、GUID やハッシュ コード) を指定する`Method1Async(string param, object userState)`、各操作が完了したら、イベント ハンドラーを決定できます、操作のどのインスタンスが完了イベントを発生させたとします。 + 複数呼び出しのオーバーロードの `userState` パラメーターにより、非同期操作を区別できます。 `Method1Async(string param, object userState)` の各呼び出しに一意な値 (GUID やハッシュ コードなど) を指定すると、各操作が完了したときに、イベント ハンドラーは、どの操作のインスタンスが完了イベントを発生させたのかを確認できます。 ### 保留中の操作の追跡 - 複数呼び出しのオーバーロードを使用する場合は、保留中のタスクの `userState` オブジェクト (タスク ID) を追跡する必要があります。 呼び出しごとに`Method1Async(string param, object userState)`は通常を生成する、新しい一意な`userState`オブジェクトをコレクションに追加します。 この `userState` オブジェクトに対応するタスクが完了イベントを発生させると、完了メソッドの実装は を調べて、それをコレクションから削除します。 このように使用すると、`userState` パラメーターはタスク ID の役割を果たします。 + 複数呼び出しのオーバーロードを使用する場合は、保留中のタスクの `userState` オブジェクト (タスク ID) を追跡する必要があります。 `Method1Async(string param, object userState)` の呼び出しごとに、通常は新しい一意な `userState` オブジェクトを生成し、それをコレクションに追加します。 この `userState` オブジェクトに対応するタスクが完了イベントを発生させると、完了メソッドの実装は を調べて、それをコレクションから削除します。 このように使用すると、`userState` パラメーターはタスク ID の役割を果たします。 > [!NOTE] > 複数呼び出しのオーバーロードの呼び出しでは、`userState` に一意な値を指定するように注意が必要です。 タスク ID が一意でないと、非同期クラスが をスローします。 ### 保留中の操作のキャンセル - 非同期操作を完了前にいつでもキャンセルできることは重要です。 イベント ベースの非同期パターンを実装するクラスには、`CancelAsync`メソッド (非同期メソッドの 1 つだけがある) 場合、または*MethodName* `AsyncCancel`メソッド (複数の非同期メソッドがある) 場合。 + 非同期操作を完了前にいつでもキャンセルできることは重要です。 イベント ベースの非同期パターンを実装するクラスには、`CancelAsync` メソッド (非同期メソッドが 1 つだけの場合) または *MethodName***AsyncCancel** メソッド (複数の非同期メソッドがある場合) が含まれます。 複数呼び出しを可能にするメソッドは `userState` パラメーターを受け取ります。これは、各タスクの有効期間を追跡するのに使用できます。 `CancelAsync` は `userState` パラメーターを受け取ります。このパラメーターにより、特定の保留中のタスクを取り消すことができます。 保留中の操作を一度に 1 つだけサポートする `Method1Async(string param)` のようなメソッドは、キャンセルできません。 ### 進行状況の更新およびインクリメンタル結果の受信 - イベント ベースの非同期パターンに準拠するクラスは、進行状況およびインクリメンタル結果を追跡するイベントをオプションで提供します。 これは、名前は通常`ProgressChanged`または*MethodName*`ProgressChanged`、およびその対応するイベント ハンドラーは時間がかかる、パラメーター。 + イベント ベースの非同期パターンに準拠するクラスは、進行状況およびインクリメンタル結果を追跡するイベントをオプションで提供します。 通常、これは `ProgressChanged` または *MethodName***ProgressChanged** という名前で、その対応するイベント ハンドラーは パラメーターを受け取ります。 - イベント ハンドラー、`ProgressChanged`イベントを調べることができます、非同期タスクの何パーセントが完了したかを決定するプロパティです。 このプロパティは 0 ~ 100 の範囲です。これを使用すると、ar の プロパティを更新できます。 複数の非同期操作が保留中の場合は、 プロパティを使用して、どの操作が進行状況をレポートしているのかを判別できます。 + `ProgressChanged` イベントのイベント ハンドラーは、 プロパティを調べて、非同期タスクの何パーセントが完了したのかを確認できます。 このプロパティは 0 ~ 100 の範囲です。これを使用すると、ar の プロパティを更新できます。 複数の非同期操作が保留中の場合は、 プロパティを使用して、どの操作が進行状況をレポートしているのかを判別できます。 一部のクラスは、非同期操作の進行に応じて、インクリメンタル結果をレポートします。 これらの結果は から派生したクラス内に保存され、派生クラスのプロパティとして表示されます。 `ProgressChanged` イベントのイベント ハンドラーのこれらの結果へは、 プロパティにアクセスするのと同じようにアクセスできます。 複数の非同期操作が保留中の場合は、 プロパティを使用して、どの操作がインクリメンタル結果をレポートしているのかを判別できます。 -## 関連項目 +## 参照 diff --git a/docs/standard/asynchronous-programming-patterns/how-to-use-components-that-support-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/how-to-use-components-that-support-the-event-based-asynchronous-pattern.md index daf6cab5921..8dd8373ceb4 100644 --- a/docs/standard/asynchronous-programming-patterns/how-to-use-components-that-support-the-event-based-asynchronous-pattern.md +++ b/docs/standard/asynchronous-programming-patterns/how-to-use-components-that-support-the-event-based-asynchronous-pattern.md @@ -24,32 +24,35 @@ helpviewer_keywords: - threading [Windows Forms], asynchronous features - AsyncCompletedEventArgs class ms.assetid: 35e9549c-1568-4768-ad07-17cc6dff11e1 -caps.latest.revision: "15" +caps.latest.revision: author: dotnet-bot ms.author: dotnetcontent manager: wpickett -ms.openlocfilehash: 49e03a8d886ccd4ed6e4b2a19692c1874f5928ec -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c7fe7d0a959a490893fba2b2fc7faceedee03879 +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/19/2018 --- # 方法 : イベントベースの非同期パターンをサポートするコンポーネントを使用する -多くのコンポーネントは、その作業を非同期的に実行した場合のオプションを提供します。 コンポーネント、たとえば、サウンドをロードして、メイン スレッドが中断されることがなく実行を止めずに"バック グラウンド"でイメージを有効にします。 +多くのコンポーネントでは、非同期的に作業を実行するオプションが提供されます。 たとえば、 コンポーネントでは、メイン スレッドが中断されることなく、実行され続ける間に、"バックグラウンドで" 音声とイメージを読み込むことができます。 - 非同期メソッドをサポートするクラスを使用して、 [- イベント ベースの非同期パターンの概要](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md)簡単に、コンポーネントのイベント ハンドラーをアタッチするのには、 *MethodName* `Completed`イベントだけ、他のイベントの場合と同様です。 呼び出すと、 *MethodName* `Async`メソッド、アプリケーションは引き続き実行するまで中断することがなく、 *MethodName* `Completed`イベントが発生します。 イベント ハンドラーで確認することができます、パラメーター、非同期操作が正常に完了した場合、またはが取り消された場合を判断します。 + [イベントベースの非同期パターンの概要](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md)をサポートするクラスで非同期メソッドを使用することは、別のイベントに対して行うように、イベント ハンドラーをコンポーネントの *MethodName***Completed** イベントにアタッチするのと同じくらい単純です。 *MethodName***Async** メソッドを呼び出すと、*MethodName***Completed** イベントが発生するまで、アプリケーションは中断されることなく実行され続けます。 イベント ハンドラーで、非同期操作が正常に完了するか、キャンセルされたかどうかを判断するには、 パラメーターを調べることができます。 - 詳細については、イベント ハンドラーを使用して、次を参照してください。[イベント ハンドラーの概要](../../../docs/framework/winforms/event-handlers-overview-windows-forms.md)です。 + イベント ハンドラーの使用に関する詳細については、「[イベント ハンドラーの概要](../../../docs/framework/winforms/event-handlers-overview-windows-forms.md)」を参照してください。 - 次の手順の非同期のイメージの読み込み機能を使用する方法を示しています、コントロール。 + 次の手順は、 コントロールの非同期イメージ読み込み機能を使用する方法について示しています。 -### イメージを非同期的にロードする PictureBox コントロールを有効にするには +### イメージを非同期的に読み込むために PictureBox コントロールを有効にするには -1. インスタンスを作成、コンポーネントをフォームでします。 +1. フォームで コンポーネントのインスタンスを作成します。 -2. イベント ハンドラーを割り当てます、イベント。 +2. イベント ハンドラーを イベントに割り当てます。 - ここで、非同期のダウンロード中に発生したエラーを確認します。 これは、キャンセルをチェックする場所。 + 非同期ダウンロード中に発生する可能性があるエラーをここで確認してください。 また、ここはキャンセルを確認するための場所でもあります。 [!code-csharp[System.Windows.Forms.PictureBox.LoadAsync#2](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/CS/Form1.cs#2)] [!code-vb[System.Windows.Forms.PictureBox.LoadAsync#2](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/VB/Form1.vb#2)] @@ -57,7 +60,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[System.Windows.Forms.PictureBox.LoadAsync#5](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/CS/Form1.cs#5)] [!code-vb[System.Windows.Forms.PictureBox.LoadAsync#5](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/VB/Form1.vb#5)] -3. 呼ばれる 2 つのボタンの追加`loadButton`と`cancelLoadButton`フォームにします。 追加イベント ハンドラーを起動し、ダウンロードをキャンセルします。 +3. `loadButton` と `cancelLoadButton` と呼ばれる 2 つのボタンをフォームに追加します。 ダウンロードの開始とキャンセルを行うために、 イベント ハンドラーを追加します。 [!code-csharp[System.Windows.Forms.PictureBox.LoadAsync#3](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/CS/Form1.cs#3)] [!code-vb[System.Windows.Forms.PictureBox.LoadAsync#3](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/VB/Form1.vb#3)] @@ -67,9 +70,9 @@ ms.lasthandoff: 11/21/2017 4. アプリケーションを実行します。 - イメージのダウンロードが進むにつれては、フォームを自由に移動して最小化、および最大化できます。 + イメージのダウンロードを進めるときに、フォームを自由に移動したり、最小化や最大化を行ったりすることができます。 -## 関連項目 +## 参照 [方法: バックグラウンドで操作を実行する](../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md) [イベントベースの非同期パターンの概要](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) - [NOT IN BUILD: Visual Basic でのマルチ スレッド](http://msdn.microsoft.com/en-us/c731a50c-09c1-4468-9646-54c86b75d269) + [ビルド内にありません: Visual Basic でのマルチスレッド](http://msdn.microsoft.com/library/c731a50c-09c1-4468-9646-54c86b75d269) diff --git a/docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md index 8d0d2ef9160..afa7d3eacd8 100644 --- a/docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md +++ b/docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md @@ -23,24 +23,27 @@ helpviewer_keywords: - AsyncOperation class - AsyncCompletedEventArgs class ms.assetid: 43402d19-8d30-426d-8785-1a4478233bfa -caps.latest.revision: "20" +caps.latest.revision: author: dotnet-bot ms.author: dotnetcontent manager: wpickett -ms.openlocfilehash: 6b4df5e4df914d932c7413e9330e8663753456c8 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4c503b89c63d976fe6304291aa1157765fa5c6f7 +ms.sourcegitcommit: 957c696f25e39f923a827fc3ad5e8ab72768838c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/13/2018 --- # イベントベースの非同期パターンの実装 顕著な遅延が発生する可能性がある操作を伴うクラスを作成する場合は、[イベント ベースの非同期パターン](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md)を実装することによって、非同期機能を与えることを検討します。 - イベント ベースの非同期パターンは、非同期機能を持つクラスをパッケージ化するための標準的な方法を提供します。 ヘルパー クラスで実装される場合と同様に、どのアプリケーション モデルでも、クラスが正しく動作を含む[!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)]、コンソール アプリケーション、および Windows フォーム アプリケーションです。 + イベント ベースの非同期パターンは、非同期機能を持つクラスをパッケージ化するための標準的な方法を提供します。 などのヘルパー クラスで実装しても、クラスは、[!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)]、コンソール アプリケーション、Windows フォーム アプリケーションを含むすべてのアプリケーション モデルで正常に動作します。 イベント ベースの非同期パターンを実装する例については、「[方法: イベント ベースの非同期パターンをサポートするコンポーネントの実装](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)」を参照してください。 - 単純な非同期操作の場合があります、に適切なコンポーネントです。 詳細についてはを参照してください[する方法: バック グラウンドで操作を実行](../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md)です。 + 単純な非同期操作の場合は、 コンポーネントが適切である可能性があります。 の詳細については、「[方法: バックグラウンドで操作を実行する](../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md)」を参照してください。 次の一覧は、このトピックで説明するイベント ベースの非同期パターンの機能を示しています。 @@ -61,7 +64,7 @@ ms.lasthandoff: 11/21/2017 ## イベントベースの非同期パターンを実装するチャンス 以下に該当する場合は、イベントベースの非同期パターンの実装を検討します。 -- クラスのクライアントは必要はありません非同期操作、つまりそのポーリングに使用できるオブジェクトとまたはクライアント構築する必要があります。 +- クラスのクライアントには、非同期操作に使用できる オブジェクトは必要ありません。つまり、ポーリング、 または は、クライアントによってビルドされる必要があるということです。 - クライアントでの非同期操作を、使い慣れたイベント/デリゲート モデルを使用して管理したい。 @@ -72,7 +75,7 @@ ms.lasthandoff: 11/21/2017 ## 非同期メソッドの名前付け 対応する非同期メソッドを用意する同期メソッド *MethodName* に対して、次の操作を行います。 - 以下を実行する *MethodName*`Async` メソッドを定義します。 + 以下を実行する *MethodName***Async** メソッドを定義します。 - `void` を返します。 @@ -80,9 +83,9 @@ ms.lasthandoff: 11/21/2017 - 複数の呼び出しを受け入れます。 - 必要に応じて、*MethodName*`Async` と同一の *MethodName*`Async` オーバーロードを定義しますが、`userState` と呼ばれる追加のオブジェクト値パラメーターを使用して定義します。 これは、メソッドの複数の同時呼び出しを管理するために実行します。この場合、メソッドの呼び出しを区別するために `userState` 値がすべてのイベント ハンドラーに返されます。 単純に後で取得するためにユーザーの状態を格納する場所として実行することもできます。 + 必要に応じて、*MethodName***Async** と同一の *MethodName***Async** オーバーロードを定義しますが、`userState` と呼ばれる追加のオブジェクト値パラメーターを使用して定義します。 これは、メソッドの複数の同時呼び出しを管理するために実行します。この場合、メソッドの呼び出しを区別するために `userState` 値がすべてのイベント ハンドラーに返されます。 単純に後で取得するためにユーザーの状態を格納する場所として実行することもできます。 - 個別の *MethodName*`Async` メソッドのシグネチャに対して、次の手順を実行します。 + 個別の *MethodName***Async** メソッドのシグネチャに対して、次の手順を実行します。 1. メソッドと同じクラス内に次のイベントを定義します。 @@ -94,7 +97,7 @@ ms.lasthandoff: 11/21/2017 public event MethodNameCompletedEventHandler MethodNameCompleted; ``` -2. 次のデリゲートを定義およびです。 これらは、クラス自体の外部に定義される可能性がありますが、同じ名前空間に定義されます。 +2. 次のデリゲートと を定義します。 これらは、クラス自体の外部に定義される可能性がありますが、同じ名前空間に定義されます。 ```vb Public Delegate Sub MethodNameCompletedEventHandler( _ @@ -117,19 +120,19 @@ ms.lasthandoff: 11/21/2017 } ``` - - *MethodName*`CompletedEventArgs` クラスで、フィールドではなくメンバーを読み取り専用プロパティとして公開していることを確認します。これは、フィールドはデータ バインドを妨げるためです。 + - *MethodName***CompletedEventArgs** クラスで、フィールドではなくメンバーを読み取り専用プロパティとして公開していることを確認します。これは、フィールドはデータ バインドを妨げるためです。 - - いずれかを定義しない-結果を生成しないメソッドに対してクラスを派生します。 インスタンスを使用してだけ自体です。 + - 結果を生成しないメソッドに の派生クラスを定義しないでください。 単純に のインスタンス自体を使用します。 > [!NOTE] - > 可能かつ適切なデリゲートを再利用するときに、それで何がおよび型です。 ここでは、名前付けされません、メソッド名に一貫性を保つよう特定のデリゲート以降とは、1 つのメソッドに関係しません。 + > 実行可能かつ適切な場合、デリゲートと 型を再利用することはまったく問題ありません。 この場合、特定のデリゲートと が 1 つのメソッドに関連付けられることがないため、メソッド名のような名前の一貫性はなくなります。 ## キャンセル処理の任意のサポート クラスで非同期操作のキャンセルをサポートする場合は、以下に示すようにキャンセルをクライアントに公開する必要があります。 キャンセルのサポートを定義する前に、以下の 2 点について判断する必要があることに注意してください。 - 今後の予想される追加機能を含め、クラスには、キャンセルをサポートする非同期操作が 1 つだけあるかどうか。 -- キャンセルをサポートする非同期操作が、複数の保留中の操作をサポートできるかどうか。 これは、*MethodName*`Async` メソッドが `userState` パラメーターを受け取り、いずれかの呼び出しが終了するまで待機する前に、複数の呼び出しを許可できるかどうかを意味します。 +- キャンセルをサポートする非同期操作が、複数の保留中の操作をサポートできるかどうか。 これは、*MethodName***Async** メソッドが `userState` パラメーターを受け取り、いずれかの呼び出しが終了するまで待機する前に、複数の呼び出しを許可できるかどうかを意味します。 これら 2 つの質問に対する回答を次の表に当てはめて、キャンセル メソッドで使用するシグネチャを決定します。 @@ -149,37 +152,37 @@ ms.lasthandoff: 11/21/2017 `CancelAsync(object userState)` メソッドを定義する場合、クライアントは、1 つの非同期メソッドのすべての呼び出しの間だけではなく、オブジェクトに対して呼び出されたすべての非同期メソッドの間で区別できるようにする状態値を慎重に選択する必要があります。 - 1 つの非同期操作のバージョンの *MethodName*`AsyncCancel` という名前は、Visual Studio の IntelliSense のようなデザイン環境でそのメソッドをより簡単に検出できるようにするために、このように決定されています。 これにより、関連するメンバーがグループ化され、非同期機能とは無関係の他のメンバーとは区別されます。 今後のバージョンで非同期操作を追加する可能性がある場合は、`CancelAsync` を定義することをお勧めします。 + 1 つの非同期操作のバージョンの *MethodName***AsyncCancel** という名前は、Visual Studio の IntelliSense のようなデザイン環境でそのメソッドをより簡単に検出できるようにするために、このように決定されています。 これにより、関連するメンバーがグループ化され、非同期機能とは無関係の他のメンバーとは区別されます。 今後のバージョンで非同期操作を追加する可能性がある場合は、`CancelAsync` を定義することをお勧めします。 同じクラスに上の表の複数のメソッドを定義しないでください。 それは意味のない行為であるか、メソッドの増加によってクラス インターフェイスがわかりにくくなります。 - これらのメソッドは、通常は直ちに結果が戻り、操作が実際にキャンセルされる場合もキャンセルされない場合もあります。 *MethodName*`Completed` イベント用のイベント ハンドラーでは、*MethodName*`CompletedEventArgs` オブジェクトに `Cancelled` フィールドが含まれます。クライアントはこれを使用して、キャンセルが発生したかどうかを判断できます。 + これらのメソッドは、通常は直ちに結果が戻り、操作が実際にキャンセルされる場合もキャンセルされない場合もあります。 *MethodName***Completed** イベント用のイベント ハンドラーでは、*MethodName***CompletedEventArgs** オブジェクトに `Cancelled` フィールドが含まれます。クライアントはこれを使用して、キャンセルが発生したかどうかを判断できます。 「[イベントベースの非同期パターンを実装するための推奨される手順](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md)」に説明されているキャンセルのセマンティクスに従ってください。 ## IsBusy プロパティの任意のサポート - クラスが複数の同時呼び出しをサポートしない場合は、`IsBusy` プロパティを公開することを検討してください。 開発者は、このプロパティによって、*MethodName*`Async` メソッドが *MethodName*`Async` メソッドからの例外をキャッチせずに実行されているかどうかを判断できます。 + クラスが複数の同時呼び出しをサポートしない場合は、`IsBusy` プロパティを公開することを検討してください。 開発者は、このプロパティによって、*MethodName***Async** メソッドが *MethodName***Async** メソッドからの例外をキャッチせずに実行されているかどうかを判断できます。 「[イベントベースの非同期パターンを実装するための推奨される手順](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md)」に説明されている `IsBusy` のセマンティクスに従ってください。 ## 進行状況レポートの任意のサポート 非同期操作の操作中に進行状況を報告することをお勧めします。 イベント ベースの非同期パターンには、これを行うためのガイドラインがあります。 -- 必要に応じて、非同期操作によって発生し、適切なスレッドで呼び出されるイベントを定義します。 オブジェクトの実行は 0 ~ 100 であると想定する整数値の進行状況インジケーターを使用します。 +- 必要に応じて、非同期操作によって発生し、適切なスレッドで呼び出されるイベントを定義します。 オブジェクトは、0 ~ 100 の範囲であることが期待されている整数値の進行状況インジケーターを伝達します。 - このイベントには、次のように名前を付けます。 - `ProgressChanged`: クラスに複数の非同期操作がある (または将来のバージョンで複数の非同期操作を含めることが予想される) 場合。 - - *MethodName* `ProgressChanged`: クラスに非同期操作が 1 つだけある場合。 + - *MethodName***ProgressChanged**: クラスに非同期操作が 1 つだけある場合。 この名前の付け方は、「キャンセルの任意のサポート」セクションで説明した、キャンセル メソッドに対する方法と対応しています。 - このイベントを使用する必要があります、デリゲートのシグネチャとクラスです。 また場合 (、読み取りバイト数のインスタンスとのダウンロード操作の合計バイト数)、複数のドメイン固有の進行状況インジケーターを指定することができます、し、必要がありますを定義する派生クラスのします。 + このイベントは、 デリゲート シグネチャと クラスを使用する必要があります。 別の方法として、ドメイン固有の進行状況インジケーター (読み取られたバイト数やダウンロード操作の合計バイト数など) を提供できる場合は、 の派生クラスを定義します。 - サポートされる非同期メソッドの数にかかわらず、クラスの `ProgressChanged` または*MethodName*`ProgressChanged` イベントは 1 つしかないことに注意してください。 クライアントは、*MethodName*`Async` メソッドに渡される `userState` オブジェクトを使用して、複数の同時操作に対する進行状況の更新を区別することが期待されています。 + サポートされる非同期メソッドの数にかかわらず、クラスの `ProgressChanged` または *MethodName***ProgressChanged** イベントは 1 つしかないことに注意してください。 クライアントは、*MethodName***Async** メソッドに渡される `userState` オブジェクトを使用して、複数の同時操作に対する進行状況の更新を区別することが期待されています。 - 複数の操作で進行状況がサポートされ、それぞれが異なる進行状況インジケーターを返す状況が発生することがあります。 この場合は、1 つの `ProgressChanged` イベントでは不適切であり、複数の `ProgressChanged` のサポートを検討することができます。 この場合は、各 *MethodName*`Async` メソッドに対して、*MethodName*`ProgressChanged` の名前付けパターンを使用します。 + 複数の操作で進行状況がサポートされ、それぞれが異なる進行状況インジケーターを返す状況が発生することがあります。 この場合は、1 つの `ProgressChanged` イベントでは不適切であり、複数の `ProgressChanged` のサポートを検討することができます。 この場合は、各 *MethodName***Async** メソッドに対して、*MethodName***ProgressChanged** の名前付けパターンを使用します。 「[イベントベースの非同期パターンを実装するための推奨される手順](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md)」に説明されている進行状況報告のセマンティクスに従ってください。 @@ -189,23 +192,23 @@ ms.lasthandoff: 11/21/2017 ### 単一操作クラス クラスが 1 つの非同期操作のみをサポートし、その操作が増分結果を返すことができる場合は、次のようにします。 -- 拡張、インクリメンタル結果データを実行するために入力し、定義、 *MethodName* `ProgressChanged`イベントがこのデータを拡張します。 +- 型を増分結果データを伝達するように拡張し、この拡張されたデータを使用する *MethodName***ProgressChanged** イベントを定義します。 -- 報告する増分結果があるときに、この *MethodName*`ProgressChanged` イベントを発生させます。 +- 報告する増分結果があるときに、この *MethodName***ProgressChanged** イベントを発生させます。 - このソリューションは、*MethodName*`ProgressChanged` イベントと同じように、同じイベントの発生で "すべての操作" に対して増分結果を返しても何の問題もないため、特に単一非同期操作のクラスに適用されます。 + このソリューションは、*MethodName***ProgressChanged** イベントと同じように、同じイベントの発生で "すべての操作" に対して増分結果を返しても何の問題もないため、特に単一非同期操作のクラスに適用されます。 ### 同じ型の増分結果を持つ複数操作クラス この場合、クラスは、それぞれが増分結果を返すことができる複数の非同期メソッドをサポートし、増分結果はすべて同じ型のデータを持っています。 - クラスに対しては単一の操作、同じ上で説明したモデルに従うインクリメンタル結果をすべての構造は機能します。 複数の非同期メソッドに適用するため、*MethodName*`ProgressChanged` イベントの代わりに `ProgressChanged` イベントを定義します。 + 同じ 構造体がすべての増分結果で機能するため、上記の単一操作クラスで説明したモデルに従います。 複数の非同期メソッドに適用するため、*MethodName***ProgressChanged** イベントの代わりに `ProgressChanged` イベントを定義します。 ### 異なる型の増分結果を持つ複数操作クラス クラスが複数の非同期メソッドをサポートし、それぞれが異なる型のデータを返す場合は、以下を行います。 - 増分結果の報告と進行状況の報告を分離します。 -- 別の定義*MethodName* `ProgressChanged`適切なイベントそれぞれ非同期のメソッドにそのメソッドのインクリメンタル結果データを処理します。 +- 各非同期メソッドの増分結果データを処理する個別の *MethodName***ProgressChanged** イベントを、適切な で定義します。 「[イベントベースの非同期パターンを実装するための推奨される手順](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md)」に説明されているように、そのイベント ハンドラーを適切なスレッドで呼び出します。 @@ -214,9 +217,9 @@ ms.lasthandoff: 11/21/2017 非同期メソッド *MethodName* の場合: -- *MethodName* に対する `out` パラメーターは、*MethodName*`Async` の一部にしないでください。 代わりに、*MethodName* での同等のパラメーターと同じ名前の *MethodName*`CompletedEventArgs` の一部にする必要があります (より適切な名前がない限り)。 +- *MethodName* に対する `out` パラメーターは、*MethodName***Async** の一部にしないでください。代わりに、*MethodName* での同等のパラメーターと同じ名前の *MethodName***CompletedEventArgs** の一部にする必要があります (より適切な名前がない限り)。 -- *MethodName* に対する `ref` パラメーターは、*MethodName*`Async` の一部として出現し、*MethodName* での同等のパラメーターと同じ名前の *MethodName*`CompletedEventArgs` の一部として出現する必要があります (より適切な名前がない限り)。 +- *MethodName* に対する `ref` パラメーターは、*MethodName***Async** の一部として出現し、*MethodName* での同等のパラメーターと同じ名前の *MethodName***CompletedEventArgs** の一部として出現する必要があります (より適切な名前がない限り)。 次に例を示します。 @@ -228,7 +231,7 @@ Public Function MethodName(ByVal arg1 As String, ByRef arg2 As String, ByRef arg public int MethodName(string arg1, ref string arg2, out string arg3); ``` - 非同期メソッドとそのクラスは次のようになります。 + 非同期メソッドとその クラスは、次のようになります。 ```vb Public Sub MethodNameAsync(ByVal arg1 As String, ByVal arg2 As String) @@ -255,7 +258,7 @@ public class MethodNameCompletedEventArgs : System.ComponentModel.AsyncCompleted } ``` -## 関連項目 +## 参照 [方法: イベントベースの非同期パターンをサポートするコンポーネントを実装する](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md) diff --git a/docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md index c2b7b29c0a3..dd575994955 100644 --- a/docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md +++ b/docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md @@ -2,7 +2,8 @@ title: "タスク ベースの非同期パターンの実装" ms.date: 06/14/2017 ms.prod: .net -ms.technology: dotnet-clr +ms.technology: +- dotnet-clr ms.topic: article dev_langs: - csharp @@ -14,25 +15,28 @@ helpviewer_keywords: - Task-based Asynchronous Pattern, .NET Framework support for - .NET Framework, asynchronous design patterns ms.assetid: fab6bd41-91bd-44ad-86f9-d8319988aa78 -caps.latest.revision: "14" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 3e61b0c94b1512509008d67017389fa11f938999 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 238f164fec78fe5e6dae9e7880fabc0a386bf399 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # タスク ベースの非同期パターンの実装 -タスク ベースの非同期パターン (TAP) は、3 つの方法 (Visual Studio の C# および Visual Basic コンパイラを使用する方法、手動で行う方法、またはコンパイラと手動による方法を組み合わせた方法) で実装できます。 以下のセクションでは、それぞれの方法について詳しく説明します。 TAP パターンを使用して、計算主体と O バインドの両方の非同期操作を実装することができます。 [ワークロード](#workloads)各種の操作について説明します。 +タスク ベースの非同期パターン (TAP) は、3 つの方法 (Visual Studio の C# および Visual Basic コンパイラを使用する方法、手動で行う方法、またはコンパイラと手動による方法を組み合わせた方法) で実装できます。 以下のセクションでは、それぞれの方法について詳しく説明します。 TAP パターンを使用し、計算主体の非同期操作と I/O バインドの非同期操作の両方を実装できます。 [[ワークロード]](#workloads) セクションでは、操作の各種類を確認します。 -## TAP メソッドの生成 +## TAP メソッドを生成する -### コンパイラを使用 -以降で[!INCLUDE[net_v45](../../../includes/net-v45-md.md)]、属性が設定されているメソッド、`async`キーワード (`Async` Visual Basic で) 非同期メソッド、および c# および Visual Basic コンパイラを実装するために必要な変換を実行すると見なされますが、TAP を使用して非同期メソッドです。 非同期メソッドは、 オブジェクトまたは オブジェクトを返す必要があります。 後者の関数の本体を返す必要があります、 `TResult`、コンパイラにより、この結果は、結果として得られるタスク オブジェクトで使用できるとします。 同様に、メソッド本体で処理されない例外は、出力タスクにマーシャリングされ、結果として得られるタスクが 状態で終了する原因となります。 例外は、 (または派生型) がハンドルされない場合で、結果として得られるタスクは 状態で終了します。 +### コンパイラを使用する +[!INCLUDE[net_v45](../../../includes/net-v45-md.md)] 以降、`async` キーワード (Visual Basic では `Async`) を使用して属性設定されているメソッドは、非同期メソッドと見なされ、TAP を使用して非同期にメソッドを実装するために必要となる変換が C# コンパイラおよび Visual Basic コンパイラによって行われます。 非同期メソッドは、 オブジェクトまたは オブジェクトを返す必要があります。 後者の場合、関数の本体は `TResult` を返す必要があり、コンパイラによって、結果として得られるタスク オブジェクトでこの結果が利用可能になっていることが確認されます。 同様に、メソッド本体で処理されない例外は、出力タスクにマーシャリングされ、結果として得られるタスクが 状態で終了する原因となります。 例外は、 (または派生型) がハンドルされない場合で、結果として得られるタスクは 状態で終了します。 -### TAP メソッドを手動で生成します。 +### 手動で TAP メソッドを生成する TAP パターンは、実装の制御を強化するために手動で実装することができます。 コンパイラは、 名前空間から公開されるパブリック アクセス機能および 名前空間でサポートされている型に依存します。 TAP を実装するには、 オブジェクトを作成して非同期操作を実行し、それが完了したら、、または メソッド、またはそのいずれかのメソッドの `Try` バージョンを呼び出します。 TAP メソッドを手動で実装する場合には、表現されている非同期操作の完了時に、結果として得られるタスクを完了する必要があります。 例: [!code-csharp[Conceptual.TAP_Patterns#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap_patterns/cs/patterns1.cs#1)] @@ -47,7 +51,7 @@ TAP パターンは、実装の制御を強化するために手動で実装す また、このような委譲が便利なもう 1 つのケースとして、高速パスの最適化を実装し、キャッシュされたタスクを返す場合を挙げられます。 ## 作業負荷 -計算主体および I/O バインドの非同期操作は、いずれも、TAP のメソッドとして実装することができます。 ただし、TAP メソッドがライブラリから公開される場合には、TAP メソッドは、I/O バインド操作 (計算が含まれていても、純粋な計算ではない) を含む作業負荷にのみ指定する必要があります。 メソッドが純粋に計算主体の場合は、同期実装としてのみ公開する必要があります。 利用するコードにはタスクまたは並列処理を実現するために別のスレッドに作業をオフロードするには、その同期メソッドの呼び出しをラップするかどうかを選択がされます。 非同期実装としてのみ公開するか、メソッドは IO バウンドである場合。 +計算主体および I/O バインドの非同期操作は、いずれも、TAP のメソッドとして実装することができます。 ただし、TAP メソッドがライブラリから公開される場合には、TAP メソッドは、I/O バインド操作 (計算が含まれていても、純粋な計算ではない) を含む作業負荷にのみ指定する必要があります。 メソッドが純粋に計算主体の場合、非同期実装としてのみ公開してください。 そのメソッドを使用するコードによって、別のスレッドに作業をオフロードするため、または並列化を実現するためにその同期メソッドの呼び出しをタスク内にラップするかどうかが選択されます。 メソッドが I/O バインドの場合、非同期実装としてのみ公開してください。 ### 計算主体のタスク クラスは、計算を集中的に行う操作の表現に適しています。 既定では、このクラスは、 クラス内の特別なサポートを利用します。また、いつ、どこで、どのように非同期計算を実行するかを細かく制御することもできます。 @@ -56,13 +60,13 @@ TAP パターンは、実装の制御を強化するために手動で実装す - .NET Framework 4 では、デリゲート (通常、 または ) の非同期実行を許容する メソッドを使用します。 のデリゲートを指定する場合、メソッドはデリゲートの非同期実行を表す オブジェクトを返します。 のデリゲートを指定する場合、メソッドは オブジェクトを返します。 メソッドのオーバーロードは、キャンセル トークン ()、タスクの作成オプション ()、およびタスク スケジューラ () を受け取ります。 たとえば、 など、現在のタスク スケジューラをターゲットとするファクトリ インスタンスを、 クラスの静的プロパティ (`Task.Factory.StartNew(…)`) として使用できます。 -- [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] (.NET Core と .NET Standard を含む) 以降のバージョンでは、静的なを使用してメソッドへのショートカットとしてです。 スレッド プールをターゲットとする計算主体のタスクを簡単に起動するには、 を使用します。 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)]計算主体のタスクを起動するための推奨メカニズムは、これ以降のバージョンとします。 使用して`StartNew`直接行う場合のみ、タスクをより細かく管理します。 +- [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] 以降のバージョンの場合 (.NET Core と .NET Standard を含む)、 のショートカットとして静的 メソッドを使用します。 スレッド プールをターゲットとする計算主体のタスクを簡単に起動するには、 を使用します。 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] 以降のバージョンでは、これが計算主体のタスクの推奨起動方法です。 タスクによりきめの細かい制御を行う場合のみ `StartNew` を直接使用します。 - タスクを個別に生成およびスケジュールする場合は、`Task` 型のコンストラクターまたは `Start` メソッドを使用します。 パブリック メソッドは、既に開始されているタスクのみを返す必要があります。 - メソッドのオーバーロードを使用します。 このメソッドは、別のタスクが完了したときにスケジュールされる新しいタスクを作成します。 一部の オーバーロードは、キャンセル トークン、継続オプション、およびタスク スケジューラを受け取るため、継続タスクのスケジュール設定と実行を細かく制御することができます。 -- 使用して、メソッドです。 これらのメソッドは、指定された一連のタスクのすべてまたは一部の完了時にスケジュールされる新しいタスクを作成します。 これらのメソッドは、これらのタスクの実行と、スケジュール設定を制御するオーバー ロードも提供します。 +- メソッドと メソッドを使用します。 これらのメソッドは、指定された一連のタスクのすべてまたは一部の完了時にスケジュールされる新しいタスクを作成します。 これらのメソッドには、こうしたタスクのスケジュール設定と実行を制御するためのオーバーロードも用意されています。 計算主体のタスクでは、実行開始前に取り消し要求を受信した場合に、スケジュール済みのタスクがシステムによって実行されないようにすることができます。 したがって、キャンセル トークン ( オブジェクト) を指定すると、そのトークンを監視する非同期コードにそのトークンを渡すことができます。 また、`StartNew` や `Run` など、前述のメソッドのいずれかにそのトークンを指定し、`Task` ランタイムによって、そのトークンが監視されるようにもできます。 @@ -79,7 +83,7 @@ TAP パターンは、実装の制御を強化するために手動で実装す 別の例外がそのタスク本体でハンドルされないと、タスクは 状態で終了し、タスクでの待機または結果へのアクセスが試みられると例外をスローします。 -### O バインドのタスク +### I/O バインドのタスク スレッドの実行全体に対してスレッドによって直接サポートされないタスクを作成するには、 型を使用します。 この型は、関連する インスタンスを返す プロパティを公開します。 このタスクの有効期間は、 バリアントなどの `TrySet` メソッドによって制御されます。 指定時間が経過すると完了するタスクを作成する場合を考えてみます。 たとえば、ユーザー インターフェイスでアクティビティを遅延させる場合などです。 クラスには、一定時間経過後にデリゲートを非同期に呼び出す機能、また、 を使用して、タイマーの前に を配置する機能が用意されています。次に例を示します。 @@ -97,13 +101,13 @@ TAP パターンは、実装の制御を強化するために手動で実装す [!code-csharp[Conceptual.TAP_Patterns#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap_patterns/cs/patterns1.cs#6)] [!code-vb[Conceptual.TAP_Patterns#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap_patterns/vb/patterns1.vb#6)] -### 計算主体と O バインドのタスクの混在 +### 計算主体のタスクと I/O バインドのタスクの混在 非同期メソッドは、計算主体の操作や I/O バインド操作に限らず、この 2 つを混在させた操作を表現できます。 実際、複数の非同期操作は、しばしばより規模の大きな混合操作に合成されます。 たとえば、前の例の `RenderAsync` メソッドでは、いくつかの入力 `imageData` に基づいて、計算を集中的に行う操作を実行してイメージをレンダリングしました。 この `imageData` は、非同期にアクセスする Web サービスから次のように取得される場合があります。 [!code-csharp[Conceptual.TAP_Patterns#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap_patterns/cs/patterns1.cs#7)] [!code-vb[Conceptual.TAP_Patterns#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap_patterns/vb/patterns1.vb#7)] -また、この例では、単一のキャンセル トークンが複数の非同期操作でどのようにスレッド化されるかも示します。 詳細については、キャンセルの使用」を参照してください。[タスクベースの非同期パターンの利用](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md)です。 +また、この例では、単一のキャンセル トークンが複数の非同期操作でどのようにスレッド化されるかも示します。 詳細については、「[タスク ベースの非同期パターンの利用](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md)」のキャンセルの使用セクションをご覧ください。 ## 関連項目 [タスク ベースの非同期パターン (TAP)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md) diff --git a/docs/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types.md b/docs/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types.md index 1bee8cdbcda..9ae2a573847 100644 --- a/docs/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types.md +++ b/docs/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types.md @@ -18,20 +18,23 @@ helpviewer_keywords: - Task-based Asynchronous Pattern, .NET Framework support for - .NET Framework, asynchronous design patterns ms.assetid: f120a5d9-933b-4d1d-acb6-f034a57c3749 -caps.latest.revision: "11" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 2e30b562b4795717df526c143df96607686a7582 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a46358052eb93662408f9c01592f917eee4540b9 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 他の非同期パターンと型との相互運用 .NET Framework 1.0 では、 とも、 [Asynchronous Programming Model (APM)](../../../docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md)パターンとも呼ばれる `Begin/End` パターンが導入されました。 .NET Framework 2.0 では、 [Event-based Asynchronous Pattern (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md)が追加されました。 .NET Framework 4 以降では、 [Task-based Asynchronous Pattern (TAP)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md) が APM および EAP よりも優先されますが、以前のパターンからの移行ルーチンを簡単にビルドする機能が提供されます。 - このトピックの内容 + このトピックの内容: - [タスクおよび APM](#APM) (「[APM から TAP へ](#ApmToTap) 」または「 [TAP から APM へ](#TapToApm)」) @@ -55,7 +58,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.AsyncInterop#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Stream1.cs#3)] [!code-vb[Conceptual.AsyncInterop#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/stream1.vb#3)] - 使用することができます、次のようにこの操作に対する TAP ラッパーを実装するメソッド。 + メソッドを次のように使用すると、この操作に対する TAP ラッパーを実装できます。 [!code-csharp[Conceptual.AsyncInterop#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Wrap1.cs#4)] [!code-vb[Conceptual.AsyncInterop#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/Wrap1.vb#4)] @@ -106,7 +109,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.AsyncInterop#12](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Wait1.cs#12)] [!code-vb[Conceptual.AsyncInterop#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/Wait1.vb#12)] - このメソッドにより、非同期メソッドで既存の 実装を使用できます。 たとえば、特定の時点に実行する非同期操作の数を制限する場合は、セマフォを利用できます (、オブジェクト)。 セマフォのカウントを *N* に初期化し、操作を実行するときには常にセマフォを待機し、操作完了時にセマフォを解放することで、同時実行される操作の数を *N*に絞り込むことができます。 + このメソッドにより、非同期メソッドで既存の 実装を使用できます。 たとえば、特定の時点に実行する非同期操作の数を絞り込む場合は、セマフォ ( オブジェクト) を利用できます。 セマフォのカウントを *N* に初期化し、操作を実行するときには常にセマフォを待機し、操作完了時にセマフォを解放することで、同時実行される操作の数を *N*に絞り込むことができます。 [!code-csharp[Conceptual.AsyncInterop#13](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Semaphore1.cs#13)] [!code-vb[Conceptual.AsyncInterop#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/Semaphore1.vb#13)] @@ -120,7 +123,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.AsyncInterop#14](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Wait1.cs#14)] [!code-vb[Conceptual.AsyncInterop#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/Wait1.vb#14)] -## 関連項目 +## 参照 [タスク ベースの非同期パターン (TAP)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md) [タスク ベースの非同期パターンの実装](../../../docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md) [タスク ベースの非同期パターンの利用](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md) diff --git a/docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md b/docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md index 4b84467233f..44775d388d2 100644 --- a/docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md +++ b/docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md @@ -16,29 +16,32 @@ helpviewer_keywords: - polling asynchronous operation status - status information [.NET Framework], asynchronous operations ms.assetid: b541af31-dacb-4e20-8847-1b1ff7c35363 -caps.latest.revision: "7" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: e1f7f74a8b38c06f6a042d55c0def76ddfc5da77 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 51e2ada4b493e8b1cbe0744c00fc2c25f9a266fb +ms.sourcegitcommit: 957c696f25e39f923a827fc3ad5e8ab72768838c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/13/2018 --- # 非同期操作のステータスのポーリング -非同期操作の結果の待機中にその他の作業を実行できるアプリケーションは、操作が完了するまで待機をブロックしないでください。 非同期操作の完了を待っている間に命令の実行を続行するのにには、次のオプションのいずれかを使用します。 +非同期操作の結果の待機中に、他の作業を実行できるアプリケーションは、操作が完了するまで待機をブロックする必要はありません。 次のオプションのいずれかを使用して、非同期操作が完了するまでの待機中に、手順の実行を継続します。 -- 使用して、のプロパティ、 、非同期操作によって返される**開始** *OperationName*メソッド操作が完了したかどうかを確認します。 このアプローチはポーリングと呼ばれ、は、このトピックで説明します。 +- 非同期操作の **Begin***OperationName* メソッドによって返される プロパティを使用して、その操作が完了したかどうかを判断します。 この方法はポーリングと呼ばれ、このトピックでデモが実行されます。 -- 使用して、個別のスレッドで非同期操作の結果を処理するデリゲート。 この方法は、次を参照してください。 [AsyncCallback デリゲートを使用して、非同期操作を終了する](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md)です。 +- デリゲートを使用し、個別のスレッドで非同期操作の結果を処理します。 この方法のデモを実行する例については、「[AsyncCallback デリゲートの使用による非同期操作の終了](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md)」を参照してください。 ## 例 - 次のコード例では、非同期のメソッドの使用方法を示します、ユーザー指定のコンピューターのドメイン ネーム システム情報を取得するクラス。 この例で、非同期操作を開始し、期間に出力します ("です。")、操作が完了するまで、コンソールにします。 注意してください**null** (**何も**Visual Basic で) 渡される、 パラメーターのため、これらの引数は、このアプローチを使用する場合は必要ありません。 + 次のコード例は、ユーザー指定のコンピューターのドメイン ネーム システム情報を取得するために、 クラスの非同期メソッドを使用してデモを実行します。 この例では、非同期操作が開始され、操作が完了するまでコンソールにピリオド (".") が出力されます。 この方法を使用する場合はこれらの引数は必要ないため、**null** (Visual Basic の場合は **Nothing**) は、 パラメーターに渡されることに注意してください。 [!code-csharp[AsyncDesignPattern#3](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDesignPattern/CS/Async_Poll.cs#3)] [!code-vb[AsyncDesignPattern#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDesignPattern/VB/Async_Poll.vb#3)] -## 関連項目 +## 参照 [イベント ベースの非同期パターン (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) [イベントベースの非同期パターンの概要](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) diff --git a/docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md b/docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md index 7550e2141a4..4c01ee4605f 100644 --- a/docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md +++ b/docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md @@ -18,27 +18,32 @@ helpviewer_keywords: - Task-based Asynchronous Pattern, .NET Framework support for - .NET Framework, asynchronous design patterns ms.assetid: 8cef1fcf-6f9f-417c-b21f-3fd8bac75007 -caps.latest.revision: "15" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: d195cc046ad7ea50cd3695ef32bf53be75c387da -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3c3d768414a5cd8a8a9fd4a7e120f74d70827729 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # タスク ベースの非同期パターン (TAP) タスク ベースの非同期パターン (TAP) は、任意の非同期操作を表すために使用される 名前空間の 型および 型に基づいています。 TAP は、新規開発に推奨の非同期デザイン パターンです。 ## 名前付け、パラメーター、および戻り値の型 - TAP では、非同期操作の開始と終了を表すために単一のメソッドが使用されます。 これは、`IAsyncResult` メソッドと `Begin` メソッドが必要になる非同期プログラミング モデル (APM または `End`) パターンや、`Async` サフィックスの付いたメソッドと、1 つ以上のイベント、イベント ハンドラーのデリゲート型、および `EventArg` 派生型も必要になるイベント ベースの非同期パターン (EAP) とは対照的です。 TAP の非同期メソッドが含まれて、 `Async` ; 操作名の後にサフィックスなど`GetAsync`の`Get`操作します。 既に `Async` サフィックスの付いたメソッド名を含むクラスに TAP メソッドを追加する場合は、代わりに `TaskAsync` サフィックスを使用します。 たとえば、既にクラスに `GetAsync` メソッドが含まれている場合は、`GetTaskAsync` という名前を使用します。 + TAP では、非同期操作の開始と終了を表すために単一のメソッドが使用されます。 これは、`IAsyncResult` メソッドと `Begin` メソッドが必要になる非同期プログラミング モデル (APM または `End`) パターンや、`Async` サフィックスの付いたメソッドと、1 つ以上のイベント、イベント ハンドラーのデリゲート型、および `EventArg` 派生型も必要になるイベント ベースの非同期パターン (EAP) とは対照的です。 TAP の非同期操作は、操作名の後に `Async` サフィックスが付きます。たとえば、`Get` 操作の場合は `GetAsync` になります。 既に `Async` サフィックスの付いたメソッド名を含むクラスに TAP メソッドを追加する場合は、代わりに `TaskAsync` サフィックスを使用します。 たとえば、既にクラスに `GetAsync` メソッドが含まれている場合は、`GetTaskAsync` という名前を使用します。 - 対応する同期メソッドにより void または 型が返されるかどうかに応じて、TAP メソッドは または `TResult` を返します。 + 対応する同期メソッドにより void または `TResult` 型が返されるかどうかに応じて、TAP メソッドは または を返します。 - TAP メソッドのパラメーターには、対応する同期メソッドと同じパラメーターを、同じ順序で指定する必要があります。 ただし、`out` パラメーターと `ref` パラメーターはこの規則に該当せず、すべて回避する必要があります。 `out` パラメーターまたは `ref` パラメーターで返されるデータは、代わりに複数の値を格納するために、タプルまたはカスタム データ構造を使用して、`TResult` により返される の一部として返す必要があります。 作成、操作、またはタスク (ここでは、メソッドの非同期の意図はメソッド名またはメソッドが属する型の名前ではオフ) の組み合わせに排他的に特化したメソッドが、この名前付けパターンに従う必要ありません。このようなメソッドと呼ばれる多くの場合、*連結子*です。 連結子の例として、に説明、[組み込みのタスクに基づいた連結子を使用して](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md#combinators)資料の[タスク ベースの非同期パターンの利用](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md). + TAP メソッドのパラメーターには、対応する同期メソッドと同じパラメーターを、同じ順序で指定する必要があります。 ただし、`out` パラメーターと `ref` パラメーターはこの規則に該当せず、すべて回避する必要があります。 `out` パラメーターまたは `ref` パラメーターで返されるデータは、代わりに複数の値を格納するために、タプルまたはカスタム データ構造を使用して、`TResult` により返される の一部として返す必要があります。 + + タスクの作成、操作、または組み合わせのためだけに使用されるメソッド (メソッド名またはメソッドが属する型の名前でメソッドの非同期の意図が明確な場合) は、この名前付けパターンに従う必要はありません。このようなメソッドは、*連結子*と呼ばれることもあります。 連結子の例には、 および があります。詳細については、記事「[タスク ベースの非同期パターンの利用](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md)」の「[タスク ベースの組み込み連結子の使用](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md#combinators)」セクションを参照してください。 - どの TAP 構文と異なります、従来の非同期プログラミング パターンなど、非同期プログラミング モデル (APM) と、イベント ベースの非同期パターン (EAP) で使用される構文の例については、次を参照してください[非同期プログラミング パターン](../../../docs/standard/asynchronous-programming-patterns/index.md)。 + 非同期プログラミング モデル (APM) やイベント ベースの非同期パターン (EAP) など、従来の非同期プログラミング パターンで使用される構文とは異なる TAP 構文の例については、「[非同期プログラミングのパターン](../../../docs/standard/asynchronous-programming-patterns/index.md)」を参照してください。 ## 非同期操作の開始 TAP に基づく非同期メソッドは、引数の検証や非同期操作の開始などの少量の作業を同期をとって実行してから結果のタスクを返すことができます。 このような同期作業は必要最低限にし、非同期メソッドからすぐに制御を戻すようにします。 制御をすぐに戻す理由は次のとおりです。 @@ -53,12 +58,14 @@ ms.lasthandoff: 10/18/2017 非同期メソッドは、使用エラーに応答して非同期メソッド呼び出しからスローされる例外のみを発生する必要があります。 運用コードでは使用エラーを発生させないようにする必要があります。 たとえば、null 参照 (Visual Basic では `Nothing`) がメソッドの引数の 1 つとして渡されたときにエラー状態 (通常 によって表される) が発生する場合、呼び出し元のコードを変更して null 参照が渡されないようにします。 他のエラーの場合はすべて、非同期メソッドの実行中に発生する例外を、返されるタスクに割り当てます。これは、タスクが返される前に非同期メソッドが同期をとって行われる場合でも同じです。 通常、タスクに含まれる例外は最大でも 1 つです。 ただし、タスクが複数の操作 ( など) を表す場合は、複数の例外を単一タスクに関連付けることができます。 ## 対象の環境 - TAP メソッドを実装するときに、非同期実行をどこで行うかを決定できます。 スレッド プールで作業負荷を実行したり、(操作実行のほとんどでスレッドにバインドされないように) 非同期 I/O を使用して実装したり、特定のスレッド (UI スレッドなど) で実行したり、任意の数の可能なコンテキストを使用したりすることができます。 TAP メソッドは実行する内容がなく、システム内の他の場所で特定の条件が発生していること (データがキューに置かれたデータ構造に到達したことを表すタスクなど) を表す を単に返すこともあります。TAP メソッドの呼び出し元は、結果のタスク上で非同期に待機することで、TAP メソッドが完了するまでの待機をブロックするか、非同期操作が完了したときに追加コード (継続コード) を実行することができます。 継続コードの作成者は、そのコードが実行される場所を制御できます。 継続コードは、 クラス ( など) のメソッドによって明示的に作成するか、継続の上位にビルドされる言語サポート (C# の `await`、Visual Basic の `Await`、F# の `AwaitValue` など) を使用して暗黙のうちに作成できます。 + TAP メソッドを実装するときに、非同期実行をどこで行うかを決定できます。 スレッド プールで作業負荷を実行したり、(操作実行のほとんどでスレッドにバインドされないように) 非同期 I/O を使用して実装したり、特定のスレッド (UI スレッドなど) で実行したり、任意の数の可能なコンテキストを使用したりすることができます。 TAP メソッドは何も実行せず、システムの他の場所で発生した何らかの条件を表す を返すのみの場合もあります (待ち行列データ構造に届いたデータを表すタスクなど)。 + + TAP メソッドの呼び出し元は、結果的に生成されるタスクに同期的に応答することで、TAP メソッドの完了を待つことをブロックできます。あるいは、非同期操作の完了時に追加 (継続) コードを実行できます。 継続コードの作成者は、そのコードが実行される場所を制御できます。 継続コードは、 クラス ( など) のメソッドによって明示的に作成するか、継続の上位にビルドされる言語サポート (C# の `await`、Visual Basic の `Await`、F# の `AwaitValue` など) を使用して暗黙のうちに作成できます。 ## タスク ステータス - クラスは、非同期操作の有効期間を提供し、そのサイクルは、 列挙型によって表されます。 および から派生する型のコーナー ケースに加え、スケジューリングからの構造の分離をサポートするために、 クラスは メソッドを公開します。 パブリックで作成されるタスクコンス トラクターをいいます*コールド タスク*、計画外のライフ サイクルを開始するため、状態とは、スケジュールが作成される場合にのみで呼び出されるこれらのインスタンス。 + クラスは、非同期操作の有効期間を提供し、そのサイクルは、 列挙型によって表されます。 および から派生する型のコーナー ケースに加え、スケジューリングからの構造の分離をサポートするために、 クラスは メソッドを公開します。 パブリック コンストラクターにより作成されるタスクは、ライフ サイクルがスケジュールされていない 状態から始まり、これらのインスタンスで が呼び出されるときにのみスケジュールされることから、*コールド タスク*と呼ばれます。 - 他のすべてのタスクは、ホットな状態からライフ サイクルが始まります。つまり、タスクが表す非同期操作が既に開始され、それらのタスクの状態は 以外の列挙値であることを意味します。 TAP メソッドから返されるすべてのタスクをアクティブにする必要があります。 **TAP メソッドが、TAP メソッドを呼び出す必要があります、返されるタスクのインスタンスを作成する、タスクのコンス トラクターを内部的に使用するかどうかは上、の返送前にオブジェクト。** TAP メソッドのコンシューマーは、返されたタスクがアクティブであるものと推定しても問題はなく、TAP メソッドから返された 上で 呼び出しを試行しないようにする必要があります。 アクティブなタスク上で を呼び出すと、 例外になります。 + 他のすべてのタスクは、ホットな状態からライフ サイクルが始まります。つまり、タスクが表す非同期操作が既に開始され、それらのタスクの状態は 以外の列挙値であることを意味します。 TAP メソッドから返されるすべてのタスクをアクティブにする必要があります。 **TAP メソッドが返すタスクをインスタンス化するためにタスクのコンストラクターを内部使用する場合、TAP メソッドはタスクを返す前に オブジェクトで を呼び出す必要があります。** TAP メソッドのコンシューマーは、返されたタスクがアクティブであるものと推定しても問題はなく、TAP メソッドから返された 上で 呼び出しを試行しないようにする必要があります。 アクティブなタスク上で を呼び出すと、 例外になります。 ## 取り消し (省略可能) TAP では、取り消しは非同期メソッドの実装側とコンシューマーのどちらでも省略可能です。 操作の取り消しを許可する場合、キャンセル トークン ( インスタンス) を受け取る非同期メソッドのオーバーロードを公開します。 規則により、パラメーターには `cancellationToken` という名前が付けられます。 @@ -68,10 +75,16 @@ ms.lasthandoff: 10/18/2017 非同期操作は取り消し要求に対してこのトークンを監視します。 取り消し要求を受け取ると、その要求を受け入れて操作を取り消すことができます。 取り消し要求によって作業が途中で終了する場合、TAP メソッドは 状態で終了するタスクを返します。使用できる結果はなく、例外もスローされません。 状態は、 状態や 状態と共に、タスクの最終状態 (完了状態) と見なされます。 したがって、タスクが 状態の場合、 プロパティは `true` を返します。 タスクが 状態で完了した場合、 など、継続のオプションを継続から除外するよう指定されていない限り、タスクに登録された継続がスケジュールまたは実行されます。 言語機能を使用して取り消されたタスクを非同期に待機するコードは実行を継続しますが、 またはその派生例外を受け取ります。 などのメソッドによってタスクでの同期をとって待機している状態をブロックされたコードも、例外を伴って実行を継続します。 - キャンセル トークンが、トークンを受け取る TAP メソッドが呼び出される前に取り消しを要求していた場合、TAP メソッドは タスクを返す必要があります。 ただし、非同期操作の実行中に取り消し要求が出される場合、その非同期操作は取り消し要求を受け取る必要はありません。 取り消し要求の結果として操作が完了した場合にのみ、返されたタスクが 状態で終了します。 取り消しが要求されても、結果 (例外) が依然として生成される場合、タスクは 状態または 状態で終了します。 開発者が何よりもまず取り消すことを目的に使用する非同期メソッドの場合は、キャンセル トークンを受け取らないオーバーロードを用意する必要はありません。 取り消せないメソッドの場合、キャンセル トークンを受け取るオーバーロードを用意しません。これにより、ターゲット メソッドが実際に取り消し可能かどうかを呼び出し元に示すことができます。 取り消しを望まないコンシューマー コードは、 を受け取るメソッドを呼び出し、引数値として を指定することができます。 は、既定の と機能的には同じです。 + キャンセル トークンが、トークンを受け取る TAP メソッドが呼び出される前に取り消しを要求していた場合、TAP メソッドは タスクを返す必要があります。 ただし、非同期操作の実行中に取り消し要求が出される場合、その非同期操作は取り消し要求を受け取る必要はありません。 取り消し要求の結果として操作が完了した場合にのみ、返されたタスクが 状態で終了します。 取り消しが要求されても、結果 (例外) が依然として生成される場合、タスクは 状態または 状態で終了します。 + + 何よりもまずキャンセルできる機能を公開することが望まれる非同期メソッドの場合、キャンセル トークンを受け取らないオーバーロードを用意する必要はありません。 取り消せないメソッドの場合、キャンセル トークンを受け取るオーバーロードを用意しません。これにより、ターゲット メソッドが実際に取り消し可能かどうかを呼び出し元に示すことができます。 取り消しを望まないコンシューマー コードは、 を受け取るメソッドを呼び出し、引数値として を指定することができます。 は、既定の と機能的には同じです。 ## 進行状況のレポート (省略可能) - 一部の非同期操作では、進行状況の通知を行うことで利点が得られます。進行状況の通知は、通常、非同期操作の進行状況に関する情報でユーザー インターフェイスを更新するために使用されます。 TAP では、進行状況が、通常 という名前のパラメーターとして非同期メソッドに渡される `progress` インターフェイスによって処理されます。 非同期メソッドの呼び出し時に進行状況インターフェイスを指定することで、不適切な使用方法により発生する競合状態 (操作の開始後に不適切に登録されたイベント ハンドラーで更新を検出できない場合) を排除できます。 さらに重要なのは、コンシューマー コードの判断に応じて、進行状況インターフェイスがさまざまな実装方法の進行状況をサポートできるようにすることです。 たとえば、コンシューマー コードが最新の進行状況の更新のみに留意する場合、すべての更新をバッファーに格納することを望む場合、各更新の操作を呼び出すことを望む場合、呼び出しを特定のスレッドにマーシャリングするかどうかの制御を望む場合が考えられます。 これらはすべて、インターフェイスの異なる実装を使用して行うことができ、各実装を特定のコンシューマー ニーズに合わせてカスタマイズできます。 取り消しと同様、TAP の実装では、API が進行状況通知をサポートする場合にのみ、 パラメーターを指定する必要があります。 たとえば、前に説明した `ReadAsync` メソッドが読み取り済みのバイト数の形式で中間進行状況を報告できる場合、進行状況のコールバックは インターフェイスとなることが考えられます。 + 一部の非同期操作では、進行状況の通知を行うことで利点が得られます。進行状況の通知は、通常、非同期操作の進行状況に関する情報でユーザー インターフェイスを更新するために使用されます。 + + TAP では、進行状況が、通常 という名前のパラメーターとして非同期メソッドに渡される `progress` インターフェイスによって処理されます。 非同期メソッドの呼び出し時に進行状況インターフェイスを指定することで、不適切な使用方法により発生する競合状態 (操作の開始後に不適切に登録されたイベント ハンドラーで更新を検出できない場合) を排除できます。 さらに重要なのは、コンシューマー コードの判断に応じて、進行状況インターフェイスがさまざまな実装方法の進行状況をサポートできるようにすることです。 たとえば、コンシューマー コードが最新の進行状況の更新のみに留意する場合、すべての更新をバッファーに格納することを望む場合、各更新の操作を呼び出すことを望む場合、呼び出しを特定のスレッドにマーシャリングするかどうかの制御を望む場合が考えられます。 これらはすべて、インターフェイスの異なる実装を使用して行うことができ、各実装を特定のコンシューマー ニーズに合わせてカスタマイズできます。 取り消しと同様、TAP の実装では、API が進行状況通知をサポートする場合にのみ、 パラメーターを指定する必要があります。 + + たとえば、前に説明した `ReadAsync` メソッドが読み取り済みのバイト数の形式で中間進行状況を報告できる場合、進行状況のコールバックは インターフェイスとなることが考えられます。 [!code-csharp[Conceptual.TAP#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap/cs/examples1.cs#2)] [!code-vb[Conceptual.TAP#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap/vb/examples1.vb#2)] @@ -90,7 +103,7 @@ ms.lasthandoff: 10/18/2017 TAP の実装が `progress` パラメーターを受け取るオーバーロードを用意している場合、`null` の引数を許可し、進行状況を報告しないことを許可する必要があります。 TAP の実装は、 オブジェクトに進行状況を同期をとって報告して、非同期メソッドが速やかに進行状況を提供し、進行状況のコンシューマーが、最適な情報の処理方法と処理場所を判断できるようにします。 たとえば、進行状況のインスタンスはコールバックをマーシャリングし、キャプチャされた同期コンテキストでイベントを発生するように選択することができます。 -## 呼び出す IProgress\ の実装 +## IProgress\ の実装 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] は、単一の implementation: 実装を提供します。 クラスは次のように宣言されます。 ```csharp @@ -187,7 +200,7 @@ Public MethodNameAsync(…, cancellationToken As CancellationToken, ## 関連トピック -|タイトル|説明| +|Title|説明| |-----------|-----------------| |[非同期プログラミングのパターン](../../../docs/standard/asynchronous-programming-patterns/index.md)|非同期操作を実行するための 3 種類のパターンとして、タスク ベースの非同期パターン (TAP)、非同期プログラミング モデル (APM)、およびイベント ベースの非同期パターン (EAP) を紹介します。| |[タスク ベースの非同期パターンの実装](../../../docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md)|タスク ベースの非同期パターン (TAP) の実装の 3 つの方法として、Visual Studio の C# および Visual Basic コンパイラを使用する方法、手動で行う方法、またはコンパイラと手動による方法を組み合わせた方法を説明します。| diff --git a/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md b/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md index 09fd19a5584..98dbb3bda50 100644 --- a/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md +++ b/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md @@ -17,26 +17,29 @@ helpviewer_keywords: - asynchronous programming, state objects - IAsyncResult interface, samples ms.assetid: e3e5475d-c5e9-43f0-928e-d18df8ca1f1d -caps.latest.revision: "11" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: e8793a78289e9b58407038f41cc9d403ff9f9940 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: cb0cdc9e98dcaf3c9f9879359eff0b31c8435773 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # AsyncCallback デリゲートおよび状態オブジェクトの使用 -使用すると、個別のスレッドで非同期操作の結果を処理するデリゲート、コールバックの間で情報を渡すと、最終的な結果を取得する状態オブジェクトを使用することができます。 このトピックでは、例を展開する方法を示します[AsyncCallback デリゲートを使用して、非同期操作を終了する](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md)です。 + デリゲートを使用し、別個のスレッドで非同期操作の結果を処理するとき、状態オブジェクトを使用してコールバック間で情報を渡し、最終的な結果を取得できます。 このトピックでは、「[AsyncCallback デリゲートの使用による非同期操作の終了](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md)」の例をさらに展開することでそれを実践します。 ## 例 - 次のコード例では、非同期のメソッドの使用方法を示します、クラス ユーザーが指定したコンピューターのドメイン ネーム システム (DNS) 情報を取得します。 この例は、定義、使用して、`HostRequest`状態情報を格納するクラス。 A`HostRequest`オブジェクトは、ユーザーが入力した各コンピューター名の作成を取得します。 このオブジェクトは、メソッドです。 `ProcessDnsInformation`メソッドは、要求が完了するたびにします。 `HostRequest`を使用してオブジェクトを取得、プロパティです。 `ProcessDnsInformation`メソッドを使用、`HostRequest`を格納するオブジェクト、要求によって返される、または要求によってスローされます。 すべての要求が完了したときに、アプリケーションが反復、`HostRequest`オブジェクトおよび DNS 情報を表示またはエラー メッセージ。 + 次のコード例は、ユーザー指定のコンピューターのドメイン ネーム システム (DNS) 情報を取得するために、 クラスの非同期メソッドを使用してデモを実行します。 この例では、`HostRequest` クラスを定義して使用し、状態情報を格納します。 `HostRequest` オブジェクトは、ユーザーがコンピューター名を入力するたびに作成されます。 このオブジェクトは メソッドに渡されます。 `ProcessDnsInformation` メソッドは、要求が完了するたびに呼び出されます。 `HostRequest` オブジェクトは プロパティを利用して取得されます。 `ProcessDnsInformation` メソッドは `HostRequest` オブジェクトを使用し、要求により返された か、スローされた を格納します。 要求がすべて完了すると、アプリケーションは `HostRequest` オブジェクトを反復処理し、DNS 情報か エラー メッセージを表示します。 [!code-csharp[AsyncDesignPattern#5](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDesignPattern/CS/AsyncDelegateWithStateObject.cs#5)] [!code-vb[AsyncDesignPattern#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDesignPattern/VB/AsyncDelegateWithStateObject.vb#5)] -## 関連項目 +## 参照 [イベント ベースの非同期パターン (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) [イベントベースの非同期パターンの概要](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) [AsyncCallback デリゲートの使用による非同期操作の終了](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md) diff --git a/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md b/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md index 24636d2c9f6..8856e49d160 100644 --- a/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md +++ b/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md @@ -17,32 +17,35 @@ helpviewer_keywords: - AsyncCallback delegate - stopping asynchronous operations ms.assetid: 9d97206c-8917-406c-8961-7d0909d84eeb -caps.latest.revision: "7" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: bbe170588776daa97fec4c736d4b1bdd871de518 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d71e78ecd5bf365d0a1f3efb8c8e15d4a1de6dc7 +ms.sourcegitcommit: 957c696f25e39f923a827fc3ad5e8ab72768838c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/13/2018 --- # AsyncCallback デリゲートの使用による非同期操作の終了 -非同期操作の結果の待機中にその他の作業を実行できるアプリケーションは、操作が完了するまで待機をブロックしないでください。 非同期操作の完了を待っている間に命令の実行を続行するのにには、次のオプションのいずれかを使用します。 +非同期操作の結果の待機中に、他の作業を実行できるアプリケーションは、操作が完了するまで待機をブロックする必要はありません。 次のオプションのいずれかを使用して、非同期操作が完了するまでの待機中に、手順の実行を継続します。 -- 使用して、個別のスレッドで非同期操作の結果を処理するデリゲート。 この方法は、このトピックで示されています。 +- デリゲートを使用し、個別のスレッドで非同期操作の結果を処理します。 このトピックでは、この方法のデモが実行されます。 -- 使用して、のプロパティ、 、非同期操作によって返される**開始** *OperationName*メソッド操作が完了したかどうかを確認します。 この方法は、次を参照してください。[非同期操作のステータスのポーリング](../../../docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md)です。 +- 非同期操作の **Begin***OperationName* メソッドによって返される プロパティを使用して、その操作が完了したかどうかを判断します。 この方法のデモを実行する例については、「[非同期操作のステータスのポーリング](../../../docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md)」を参照してください。 ## 例 - 次のコード例では、非同期のメソッドの使用方法を示します、クラス ユーザーが指定したコンピューターのドメイン ネーム システム (DNS) 情報を取得します。 この例で作成、を参照するデリゲート、`ProcessDnsInformation`メソッドです。 このメソッドは、DNS 情報の非同期要求ごとに 1 回呼び出されます。 + 次のコード例は、ユーザー指定のコンピューターのドメイン ネーム システム (DNS) 情報を取得するために、 クラスの非同期メソッドを使用してデモを実行します。 この例では、`ProcessDnsInformation` メソッドを参照する デリゲートを作成します。 このメソッドは、DNS 情報に対する非同期要求ごとに 1 回呼び出されます。 - 渡されるユーザー指定のホストに注意してください、 パラメーター。 示す例を定義してより複雑な状態のオブジェクトを使用して、次を参照してください。 [AsyncCallback デリゲートおよび状態オブジェクトを使用して](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md)です。 + ユーザー指定のホストは、 パラメーターに渡されます。 複雑な状態オブジェクトの定義と使用に関するデモを実行する例については、「[AsyncCallback デリゲートおよび状態オブジェクトの使用](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md)」を参照してください。 [!code-csharp[AsyncDesignPattern#4](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDesignPattern/CS/AsyncDelegateNoStateObject.cs#4)] [!code-vb[AsyncDesignPattern#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDesignPattern/VB/AsyncDelegateNoState.vb#4)] -## 関連項目 +## 参照 [イベント ベースの非同期パターン (EAP)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) [イベントベースの非同期パターンの概要](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) [IAsyncResult を使用した非同期メソッドの呼び出し](../../../docs/standard/asynchronous-programming-patterns/calling-asynchronous-methods-using-iasyncresult.md) diff --git a/docs/standard/attributes/applying-attributes.md b/docs/standard/attributes/applying-attributes.md index 94a6d3862cb..a0ad1ccf11d 100644 --- a/docs/standard/attributes/applying-attributes.md +++ b/docs/standard/attributes/applying-attributes.md @@ -16,15 +16,18 @@ helpviewer_keywords: - assemblies [.NET Framework], attributes - attributes [.NET Framework], applying ms.assetid: dd7604eb-9fa3-4b60-b2dd-b47739fa3148 -caps.latest.revision: "19" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: e23649c5d833bef8b74ec5d3b9c22235756580e0 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b55684ec30a69bd9773e19420fbe89ca58fd66dd +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 属性の適用 コードの要素に属性を適用するには、次のプロセスを使用します。 @@ -37,11 +40,11 @@ ms.lasthandoff: 11/21/2017 3. 属性に、位置指定パラメーターと名前付きパラメーターを指定します。 - 位置指定パラメーターは必須で、名前付きパラメーターの前に指定する必要があります。位置指定パラメーターは、属性のいずれかのコンストラクターのパラメーターに対応します。 名前付きパラメーターは省略可能で、属性の読み取り/書き込みプロパティに対応します。 C++、および C# の場合、次のように指定します。 `name` = `value` 、省略可能な各パラメーターの位置`name`プロパティの名前を指定します。 Visual Basic では、`name`:=`value` を指定します。 + 位置指定パラメーターは必須で、名前付きパラメーターの前に指定する必要があります。位置指定パラメーターは、属性のいずれかのコンストラクターのパラメーターに対応します。 名前付きパラメーターは省略可能で、属性の読み取り/書き込みプロパティに対応します。 C++ と C# では、オプションのパラメーターごとに `name`=`value` を指定します。`name` はプロパティの名前です。 Visual Basic では、`name`:=`value` を指定します。 コードをコンパイルすると属性がメタデータに格納され、ランタイム リフレクション サービスを通じて共通言語ランタイム、すべてのカスタム ツールやアプリケーションで使用できるようになります。 - 規則では、属性の名前の最後は Attribute にします。 ただし、Visual Basic や C# など、ランタイムを対象とする言語では、属性をフルネームで指定する必要はありません。 たとえば、初期化する、のみとしてそれを参照する必要があります**Obsolete**です。 + 規則では、属性の名前の最後は Attribute にします。 ただし、Visual Basic や C# など、ランタイムを対象とする言語では、属性をフルネームで指定する必要はありません。 たとえば、 を初期化する場合は、**Obsolete** と指定するだけで参照できます。 ## メソッドへの属性の適用 次の例では、**System.ObsoleteAttribute** をどのように宣言するかを解説しています。これは、コードを Obsolete として記述しておくために使用します。 文字列 `"Will be removed in next version"` が属性に渡されます。 属性が記述されているコードが呼び出された時点で、渡された文字列を示すコンパイラの警告が表示されます。 @@ -59,7 +62,7 @@ ms.lasthandoff: 11/21/2017 この属性が適用されると、ファイルのメタデータ部分のアセンブリ マニフェストの中に、文字列 `"My Assembly"` が挿入されます。 この属性を表示するには、[MSIL 逆アセンブラー (Ildasm.exe)](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) を使用するか、または属性を取得するためのプログラムを作成します。 -## 関連項目 +## 参照 [属性](../../../docs/standard/attributes/index.md) [属性に格納されている情報の取得](../../../docs/standard/attributes/retrieving-information-stored-in-attributes.md) [概念](/cpp/windows/attributed-programming-concepts) diff --git a/docs/standard/attributes/retrieving-information-stored-in-attributes.md b/docs/standard/attributes/retrieving-information-stored-in-attributes.md index 2c7e6ede108..edb6e2e1039 100644 --- a/docs/standard/attributes/retrieving-information-stored-in-attributes.md +++ b/docs/standard/attributes/retrieving-information-stored-in-attributes.md @@ -17,39 +17,42 @@ helpviewer_keywords: - multiple attribute instances - attributes [.NET Framework], retrieving ms.assetid: 37dfe4e3-7da0-48b6-a3d9-398981524e1c -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 9d3fd9a5a49d65b37d2cdb5107e9c516a6df5847 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 146572fb060d1bd37d6eee5b5dce3c255b28f8b2 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 属性に格納されている情報の取得 -簡単なプロセスは、カスタム属性を取得します。 最初に、取得する属性のインスタンスを宣言します。 次に、使用、新しい属性を取得する属性の値を初期化します。 新しい属性が初期化されると、単にそのプロパティを使用する値を取得します。 +カスタム属性の取得は簡単なプロセスです。 まず、取得する属性のインスタンスを宣言します。 次に、 メソッドを使用して、取得する属性の値に新しい属性を初期化します。 新しい属性が初期化されたら、そのプロパティを使用して値を取得できるようになります。 > [!IMPORTANT] -> このトピックでは、実行コンテキストに読み込まれるコードの属性を取得する方法について説明します。 リフレクション専用コンテキストに読み込まれるコードの属性を取得するには、使用する必要があります、クラスのように[する方法: リフレクション コンテキストにアセンブリをロード](../../../docs/framework/reflection-and-codedom/how-to-load-assemblies-into-the-reflection-only-context.md)です。 +> このトピックでは、実行コンテキストに読み込まれるコードのカスタム属性を取得する方法について説明します。 リフレクションのみのコンテキストに読み込まれたコードの属性を取得するには、「[方法: リフレクションのみのコンテキストにアセンブリを読み込む](../../../docs/framework/reflection-and-codedom/how-to-load-assemblies-into-the-reflection-only-context.md)」で説明されているように、 クラスを使用する必要があります。 - このセクションでは、次の属性を取得する方法について説明します。 + このセクションでは、以下の属性の取得方法について説明します。 -- [属性の 1 つのインスタンスを取得します。](#cpconretrievingsingleinstanceofattribute) +- [属性の単一のインスタンスを取得する](#cpconretrievingsingleinstanceofattribute) -- [同じスコープに適用される属性の複数のインスタンスを取得します。](#cpconretrievingmultipleinstancesofattributeappliedtosamescope) +- [同じスコープに適用された属性の複数のインスタンスを取得する](#cpconretrievingmultipleinstancesofattributeappliedtosamescope) -- [他のスコープに適用される属性の複数のインスタンスを取得します。](#cpconretrievingmultipleinstancesofattributeappliedtodifferentscopes) +- [異なるスコープに適用された属性の複数のインスタンスを取得する](#cpconretrievingmultipleinstancesofattributeappliedtodifferentscopes) -## 属性の 1 つのインスタンスを取得します。 - 次の例で、 `DeveloperAttribute` (前のセクションで説明) に適用される、`MainApp`クラス レベルのクラスです。 `GetAttribute`メソッドを使用**されていて**に格納されている値を取得する`DeveloperAttribute`それらをコンソールに表示する前にクラス レベル上。 +## 属性の単一のインスタンスを取得する + 次の例では、(前のセクションで説明した) `DeveloperAttribute` がクラス レベルで `MainApp` クラスに適用されます。 `GetAttribute` メソッドは **GetCustomAttribute** を使用して、クラス レベルで `DeveloperAttribute` に格納されている値を取得してからコンソールに表示します。 [!code-cpp[Conceptual.Attributes.Usage#18](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source3.cpp#18)] [!code-csharp[Conceptual.Attributes.Usage#18](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source3.cs#18)] [!code-vb[Conceptual.Attributes.Usage#18](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source3.vb#18)] - このプログラムは、実行時に、次のテキストを表示します。 + このプログラムを実行すると、次のテキストが表示されます。 ``` The Name Attribute is: Joan Smith. @@ -57,41 +60,41 @@ The Level Attribute is: 42. The Reviewed Attribute is: True. ``` - 属性が見つからない場合、**されていて**メソッド初期化`MyAttribute`を null 値にします。 この例で確認`MyAttribute`このようなインスタンスの属性が見つからない場合、ユーザーに通知します。 場合、`DeveloperAttribute`はクラス スコープで、次のメッセージをコンソールに表示します。 + 属性が見つからない場合、**GetCustomAttribute** メソッドは `MyAttribute` を null 値に初期化します。 この例では、そのようなインスタンスの `MyAttribute` を確認し、属性が見つからない場合はユーザーに通知します。 クラス スコープ内に `DeveloperAttribute` 見つからない場合は、次のメッセージがコンソールに表示されます。 ``` The attribute was not found. ``` - この例では、属性の定義が、現在の名前空間にある前提としています。 現在の名前空間がない場合、属性の定義が存在する名前空間をインポートしてください。 + この例では、属性の定義が現在の名前空間にあると仮定しています。 属性の定義が現在の名前空間にない場合は、その定義が存在する名前空間を忘れずにインポートしてください。 -## 同じスコープに適用される属性の複数のインスタンスを取得します。 - 前の例では、検査するクラスとを検索する特定の属性に渡されるのします。 そのコードは、属性の 1 つのインスタンスは、クラス レベルで適用されても専用の場合は動作します。 ただし、同じクラス レベルでは、属性の複数のインスタンスが適用されている場合、**されていて**メソッドがすべての情報を取得できません。 使用できる場合は、同じ属性の複数のインスタンスが同じスコープに適用されます、配列属性のすべてのインスタンスを配置します。 たとえば、次の 2 つのインスタンス`DeveloperAttribute`、同じクラスのクラス レベルで適用される、`GetAttribute`メソッドは、両方の属性に含まれる情報を表示するように変更できます。 ただし、同じレベルでは、複数の属性を適用すると属性を定義する必要があります、 **AllowMultiple**プロパティに設定**true**で、です。 +## 同じスコープに適用された属性の複数のインスタンスを取得する + 前の例では、検査するクラスと検索する特定の属性が に渡されます。 このコードは、クラス レベルで属性のインスタンスが 1 つのみ適用される場合に動作します。 ただし、属性のインスタンスが同じクラス レベルに複数適用されている場合、**GetCustomAttribute** メソッドはすべての情報を取得しません。 同じ属性のインスタンスが同じスコープに複数適用されている場合、 を使用して、属性のすべてのインスタンスを配列に配置することができます。 たとえば、同じクラスのクラス レベルで 2 インスタンスの `DeveloperAttribute` が適用された場合、両方の属性にある情報を表示するように `GetAttribute` メソッドを変更できます。 ただし、同じレベルで複数の属性を適用するには、 で **AllowMultiple** プロパティを **true** に設定して属性を定義する必要があります。 - 次のコード例を使用する方法を示しています、 **GetCustomAttributes**メソッドのすべてのインスタンスを参照している配列を作成する`DeveloperAttribute`いずれかでクラスを指定します。 すべての属性の値は、コンソールに表示されます。 + 次のコード例は、**GetCustomAttributes** メソッドを使用して、指定されたクラスで `DeveloperAttribute` のすべてのインスタンスを参照する配列を作成する方法を示しています。 すべての属性の値がコンソールに表示されます。 [!code-cpp[Conceptual.Attributes.Usage#19](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source3.cpp#19)] [!code-csharp[Conceptual.Attributes.Usage#19](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source3.cs#19)] [!code-vb[Conceptual.Attributes.Usage#19](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source3.vb#19)] - 属性が見つからない場合、このコードをユーザーに通知します。 両方のインスタンスにそれ以外の場合、情報が含まれている`DeveloperAttribute`が表示されます。 + このコードでは、属性が見つからない場合、ユーザーに警告されます。 それ以外の場合は、`DeveloperAttribute` の両方のインスタンスに含まれる情報が表示されます。 -## 他のスコープに適用される属性の複数のインスタンスを取得します。 - メソッドせずクラス全体を検索してそのクラスの属性のすべてのインスタンスを返します。 代わりが指定されたメソッドまたはメンバーを 1 つだけを同時に検索します。 すべてのメソッドまたはメンバーに個別に指定する必要がありますすべてのメンバーに適用される同じ属性を持つクラスがあるし、それらのメンバーに適用されるすべての属性の値を取得する、 **GetCustomAttributes**と**されていて**です。 +## 異なるスコープに適用された属性の複数のインスタンスを取得する + メソッドと メソッドは、クラス全体を検索し、そのクラスに含まれる属性のすべてのインスタンスを返す処理を行いません。 代わりに、指定されたメソッドまたはメンバーを一度に 1 つのみ検索します。 各メンバーに同じ属性が適用されているクラスがあり、それらのメンバーに適用されているすべての属性の値を取得する場合は、すべてのメソッドまたはメンバーを個別に **GetCustomAttributes** および **GetCustomAttribute** に渡す必要があります。 - 次のコード例は、パラメーターとしてクラスを受け取りし、検索、 `DeveloperAttribute` (定義されている以前) とそのクラスの各メソッドはすべて、クラス レベルでします。 + 次のコード例では、クラスをパラメーターとして受け取り、クラス レベルとそのクラスの個々のメソッドごとに `DeveloperAttribute` (以前に定義) を検索します。 [!code-cpp[Conceptual.Attributes.Usage#20](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source3.cpp#20)] [!code-csharp[Conceptual.Attributes.Usage#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source3.cs#20)] [!code-vb[Conceptual.Attributes.Usage#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source3.vb#20)] - インスタンスがない場合、`DeveloperAttribute`メソッド レベルまたはクラス レベル上にある、`GetAttribute`メソッドは、属性が見つかりましたがないユーザーに通知し、メソッドまたは属性が含まれていないクラスの名前を表示します。 属性が見つかった場合、 `Name`、 `Level`、および`Reviewed`フィールドがコンソールに表示されます。 + メソッド レベルまたはクラス レベルで `DeveloperAttribute` のインスタンスが見つからない場合、`GetAttribute` メソッドは属性が見つからなかったことをユーザーに通知し、その属性を含まないメソッドまたはクラスの名前を表示します。 属性が見つかると、`Name`、`Level`、および `Reviewed` フィールドがコンソールに表示されます。 - メンバーを使用することができます、クラスを渡されたクラスで、個々 のメソッドとメンバーを取得します。 この例の最初のクエリ、**型**クラス レベルの属性情報を取得するオブジェクト。 次に、使用してを配列のすべてのメソッドのインスタンスを配置するメソッド レベルの属性情報を取得するオブジェクト。 使用することも、プロパティ レベルの属性を確認するメソッドまたはコンス トラクターのレベルの属性を確認します。 + クラスのメンバーを使用して、渡されたクラスの個々のメソッドとメンバーを取得できます。 この例では、まず **Type** オブジェクトに対してクエリを実行して、クラス レベルの属性情報を取得します。 次に、 を使用してすべてのメソッドのインスタンスを オブジェクトの配列に配置し、メソッド レベルの属性情報を取得します。 メソッドを使用して、プロパティ レベルまたは で属性を確認したり、コンストラクター レベルで属性を確認したりすることもできます。 -## 関連項目 +## 参照 diff --git a/docs/standard/attributes/writing-custom-attributes.md b/docs/standard/attributes/writing-custom-attributes.md index 4b82c5bfb4d..5977f83afbd 100644 --- a/docs/standard/attributes/writing-custom-attributes.md +++ b/docs/standard/attributes/writing-custom-attributes.md @@ -22,18 +22,21 @@ helpviewer_keywords: - Inherited property - attribute classes, declaring ms.assetid: 97216f69-bde8-49fd-ac40-f18c500ef5dc -caps.latest.revision: "14" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 0205edba221b833625becbe6a1f2fdda2f9409a2 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d3fb814d6b458de90d684a3ac92e22a62e290a9a +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # カスタム属性の記述 -独自のカスタム属性をデザインするために、多くの新しい概念を習得する必要はありません。 オブジェクト指向プログラミングに精通してクラスをデザインする方法を理解しているなら、必要な知識をほぼすべて持っています。 カスタム属性は、本質的に従来のクラスから直接または間接的に派生されるです。 従来のクラスと同じように、カスタム属性には、データを格納したり取得したりするメソッドが含まれます。 +独自のカスタム属性をデザインするために、多くの新しい概念を習得する必要はありません。 オブジェクト指向プログラミングに精通してクラスをデザインする方法を理解しているなら、必要な知識をほぼすべて持っています。 カスタム属性は、基本的には、 から直接的に派生したか間接的に派生した従来のクラスです。 従来のクラスと同じように、カスタム属性には、データを格納したり取得したりするメソッドが含まれます。 カスタム属性クラスを適切にデザインするための主要な手順は次のとおりです。 @@ -55,7 +58,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.Attributes.Usage#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#5)] [!code-vb[Conceptual.Attributes.Usage#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#5)] - はカスタム属性を作成するために重要な 3 つのメンバーがあります: [AttributeTargets](#cpconwritingcustomattributesanchor1)、[継承](#cpconwritingcustomattributesanchor2)、および[AllowMultiple](#cpconwritingcustomattributesanchor3)です。 + には、カスタム属性を作成するために重要な 3 つのメンバーがあります。それらは、[AttributeTargets](#cpconwritingcustomattributesanchor1)、[Inherited](#cpconwritingcustomattributesanchor2)、[AllowMultiple](#cpconwritingcustomattributesanchor3) です。 ### AttributeTargets メンバー @@ -69,7 +72,7 @@ ms.lasthandoff: 11/21/2017 ### Inherited プロパティ - プロパティは、属性、属性を適用するクラスから派生したクラスによって継承できるかどうかを示します。 このプロパティは、 **true** (既定) か **false** フラグのいずれかを使います。 たとえば、次の例で、 `MyAttribute` は true **の既定の**値が指定されていますが、 `YourAttribute` は false **の**値が指定されています。 + プロパティは、属性が、その属性が適用されたクラスから派生したクラスによって継承可能かどうかを示します。 このプロパティは、 **true** (既定) か **false** フラグのいずれかを使います。 たとえば、次の例で、 `MyAttribute` は true **の既定の**値が指定されていますが、 `YourAttribute` は false **の**値が指定されています。 [!code-cpp[Conceptual.Attributes.Usage#7](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#7)] [!code-csharp[Conceptual.Attributes.Usage#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#7)] @@ -89,7 +92,7 @@ ms.lasthandoff: 11/21/2017 ### AllowMultiple プロパティ - プロパティは、要素上、属性の複数のインスタンスに存在できるかどうかを示します。 **true**に設定されている場合、複数のインスタンスが許可され、 **false** (既定) に設定されている場合、1 つのインスタンスのみが許可されます。 + プロパティは、1 つの要素に、属性の複数のインスタンスが存在できるかどうかを示します。 **true**に設定されている場合、複数のインスタンスが許可され、 **false** (既定) に設定されている場合、1 つのインスタンスのみが許可されます。 次の例では、 `MyAttribute` は false **の既定の**値が指定されていますが、 `YourAttribute` は **true**の値が指定されています。 @@ -163,7 +166,7 @@ ms.lasthandoff: 11/21/2017 最初の例は、必須の名前付きパラメーターのみを使って適用された属性を示し、2 番目の例は、必須パラメーターと省略可能なパラメーターの両方を使って適用された属性を示しています。 -## 関連項目 +## 参照 [属性](../../../docs/standard/attributes/index.md) diff --git a/docs/standard/base-types/anchors-in-regular-expressions.md b/docs/standard/base-types/anchors-in-regular-expressions.md index 25925905c87..2a87a607344 100644 --- a/docs/standard/base-types/anchors-in-regular-expressions.md +++ b/docs/standard/base-types/anchors-in-regular-expressions.md @@ -21,15 +21,18 @@ helpviewer_keywords: - .NET Framework regular expressions, anchors - .NET Framework regular expressions, atomic zero-width assertions ms.assetid: 336391f6-2614-499b-8b1b-07a6837108a7 -caps.latest.revision: "20" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 453776c97ec0531cea94ecf44c31216cf5b17a3b -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 648c86c71de3c92825af3cfdd4ac2ca023f5e027 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 正規表現のアンカー アンカー (アトミック ゼロ幅アサーション) は、文字列が一致する位置を指定します。 検索式でアンカーを使用した場合、正規表現エンジンは、後方の文字列を読み込んだり、文字に一致させたりすることはしません。指定された位置での一致のみが検索されます。 たとえば、 `^` は、行または文字列の先頭に一致する必要があることを指定します。 したがって、正規表現 `^http:` は、"http:" が行の先頭にある場合にのみ一致します。 次の表は、.NET の正規表現でサポートされているアンカーの一覧です。 @@ -47,7 +50,7 @@ ms.lasthandoff: 11/21/2017 ## 文字列または行の先頭: ^ - `^` アンカーは、その後に続くパターンが、文字列の最初の文字位置から始まる必要があることを指定します。 使用する場合`^`で、オプション (を参照してください[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md))、各行の先頭で一致する必要があります。 + `^` アンカーは、その後に続くパターンが、文字列の最初の文字位置から始まる必要があることを指定します。 オプションを指定して `^` を使用した場合は (「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」を参照)、各行の先頭に一致します。 次の例では、正規表現で `^` アンカーを使用して、プロ野球チームが存続した年数に関する情報を抽出します。 この例では、 メソッドの 2 つのオーバーロードを呼び出しています。 @@ -100,7 +103,7 @@ ms.lasthandoff: 11/21/2017 ## 文字列の末尾または末尾の改行の前: \Z - `\Z` アンカーは、入力文字列の末尾、または入力文字列の末尾にある `\n` の前に一致する必要があることを指定します。 これは `$` アンカーと同じですが、`\Z` では オプションが無視される点が異なります。 したがって、複数行文字列では、最後の行の末尾か、最後の行の `\n`の前にのみ一致することができます。 + `\Z` アンカーは、入力文字列の末尾、または入力文字列の末尾にある `\n` の前に一致する必要があることを指定します。 これは `$` アンカーと同じですが、`\Z` では オプションが無視される点が異なります。 したがって、複数行文字列では、最後の行の末尾か、最後の行の `\n` の前にのみ一致することができます。 `\Z` は `\n` に一致しますが、 `\r\n` (CR/LF 文字の組み合わせ) には一致しないことに注意してください。 CR/LF と一致させるには、 `\r?\Z` を正規表現パターンに含めます。 @@ -113,7 +116,7 @@ ms.lasthandoff: 11/21/2017 ## 文字列の末尾のみ: \z - `\z` アンカーは、入力文字列の末尾に一致する必要があることを指定します。 `$` 言語要素と同様に、`\z` では オプションが無視されます。 `\Z` 言語要素とは異なり、 `\z` は文字列末尾にある `\n` 文字には一致しません。 したがって、入力文字列の最後の行にのみ一致することができます。 + `\z` アンカーは、入力文字列の末尾に一致する必要があることを指定します。 `$` 言語要素と同様に、`\z` では オプションが無視されます。 `\Z` 言語要素とは異なり、`\z` は文字列末尾にある `\n` 文字には一致しません。 したがって、入力文字列の最後の行にのみ一致することができます。 次の例では、正規表現で `\z` アンカーを使用して、プロ野球チームが存続した年数に関する情報を抽出します。この正規表現は、アンカーを除けば前のセクションで取り上げた例と同じです。 この例は、文字列配列の 5 つの各要素と正規表現パターン `^((\w+(\s?)){2,}),\s(\w+\s\w+),(\s\d{4}(-(\d{4}|present))?,?)+\r?\z`の一致を試みます。 これらのうち、2 つの文字列は復帰文字と改行文字で終わり、別の 1 つの文字列は改行文字で終わっています。残りの 2 つの文字列の末尾には、復帰文字も改行文字もありません。 出力結果が示すように、復帰文字も改行文字もない文字列だけがパターンに一致します。 @@ -146,7 +149,7 @@ ms.lasthandoff: 11/21/2017 ## ワード境界: \b - `\b` アンカーは、単語文字 ( `\w` 言語要素) と単語以外の文字 ( `\W` 言語要素) の境界に一致する必要があることを示します。 単語文字は英数字とアンダースコアで構成され、単語以外の文字は、英数字でもアンダースコアでもない任意の文字で構成されます (詳細については、次を参照してください[文字クラス](../../../docs/standard/base-types/character-classes-in-regular-expressions.md)。)。文字列の先頭または末尾にあるワード境界にも一致する可能性があります。 + `\b` アンカーは、単語文字 ( `\w` 言語要素) と単語以外の文字 ( `\W` 言語要素) の境界に一致する必要があることを示します。 単語文字は英数字とアンダースコアで構成され、単語以外の文字は、英数字でもアンダースコアでもない任意の文字で構成されます 詳細については、「[文字クラス](../../../docs/standard/base-types/character-classes-in-regular-expressions.md)」を参照してください。文字列の先頭または末尾にあるワード境界にも一致する可能性があります。 `\b` アンカーは、部分式を単語の先頭または末尾ではなく単語全体に一致させる目的で頻繁に使用されます。 次の例の正規表現 `\bare\w*\b` は、この使用方法を示しています。 これは、部分文字列 "are" で始まる任意の単語に一致します。 この例の出力から、 `\b` は入力文字列の先頭と末尾の両方に一致することもわかります。 @@ -181,6 +184,6 @@ ms.lasthandoff: 11/21/2017 |`qu`|部分文字列 "qu" と一致します。| |`\w+`|1 つ以上の単語文字に一致します。| -## 関連項目 +## 参照 [正規表現言語 - クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) [正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md) diff --git a/docs/standard/base-types/backreference-constructs-in-regular-expressions.md b/docs/standard/base-types/backreference-constructs-in-regular-expressions.md index 7454c1fba48..3b32e054c6d 100644 --- a/docs/standard/base-types/backreference-constructs-in-regular-expressions.md +++ b/docs/standard/base-types/backreference-constructs-in-regular-expressions.md @@ -17,15 +17,18 @@ helpviewer_keywords: - .NET Framework regular expressions, backreference constructs - regular expressions, backreference constructs ms.assetid: 567a4b8d-0e79-49dc-8df9-f4b1aa376a2a -caps.latest.revision: "11" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: a884e70f542c2ed7ff63e39cb7eadedf0ef7b4d0 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2ec92933bdf123412a3d489fc493d76c4a0dc0d0 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 正規表現での前方参照構成体 前方参照は、文字列内の繰り返しの文字または部分文字列を識別するために便利な方法を提供します。 たとえば、入力文字列に複数回出現する任意の部分文字列が含まれている場合は、キャプチャ グループを使用して最初の一致を検出し、前方参照を使用して部分文字列の後続の出現箇所を見つけます。 @@ -33,16 +36,16 @@ ms.lasthandoff: 10/18/2017 > [!NOTE] > 別の構文を使用して、置換文字列内の名前付きおよび番号付きのキャプチャ グループを参照します。 詳細については、「 [Substitutions](substitutions-in-regular-expressions.md)」を参照してください。 - .NET では、番号付きおよび名前付きのキャプチャ グループを参照する個別の言語要素が定義されています。 キャプチャ グループの詳細については、次を参照してください。[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)です。 + .NET では、番号付きおよび名前付きのキャプチャ グループを参照する個別の言語要素が定義されています。 キャプチャ グループの詳細については、「[グループ化コンストラクト](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 ## 番号付き前方参照 番号付き前方参照は、次の構文を使用します。 `\` *number* - ここで、*number* は、正規表現でのキャプチャ グループの位置を表す序数です。 たとえば、`\4` は 4 番目のキャプチャ グループの内容と一致します。 場合*数*は正規表現パターンで定義されていない、解析エラーが発生し、正規表現エンジンは、スロー、です。 たとえば、正規表現 `\b(\w+)\s\1` は有効です (`(\w+)` が式の中の最初で唯一のキャプチャ グループであるため)。 これに対して、`\b(\w+)\s\2` は無効であり、引数の例外がスローされます (`\2` という番号のキャプチャ グループは存在しないため)。 + ここで、*number* は、正規表現でのキャプチャ グループの位置を表す序数です。 たとえば、`\4` は 4 番目のキャプチャ グループの内容と一致します。 *number* が正規表現パターンで定義されていない場合は、解析エラーが発生し、正規表現エンジンが をスローします。 たとえば、正規表現 `\b(\w+)\s\1` は有効です (`(\w+)` が式の中の最初で唯一のキャプチャ グループであるため)。 これに対して、`\b(\w+)\s\2` は無効であり、引数の例外がスローされます (`\2` という番号のキャプチャ グループは存在しないため)。 - 8 進数のエスケープ コード間であいまいさを注意してください (など`\16`) および`\`*数*同じ表記を使用する前方参照です。 このあいまいさは、次のように解決されます。 + 同じ表記法を使用した、8 進数のエスケープ コード (`\16` など) と `\`*number* 前方参照との間には、あいまいさがあることに注意してください。 このあいまいさは、次のように解決されます。 - `\1` から `\9` までの式は、8 進数コードとしてではなく、常に前方参照として解釈されます。 @@ -50,9 +53,9 @@ ms.lasthandoff: 10/18/2017 - `\10` 以降の式は、その番号に対応する前方参照がある場合、前方参照として解釈されます。それ以外の場合は、8 進数のコードとして解釈されます。 -- 正規表現に未定義のグループ番号への前方参照が含まれている場合は解析エラーが発生し、正規表現エンジンがスローされます、です。 +- 正規表現に未定義のグループ番号への前方参照が含まれる場合、解析エラーが発生し、正規表現エンジンが をスローします。 - あいまいさが問題の場合は、行うこともできます、 `\k<`*名前*`>`形式では、あいまいではないと、8 進文字コードが混乱することはできません。 同様に、`\xdd` などの 16 進数コードはあいまいではなく、前方参照と混同することはありません。 + あいまいさが問題になる場合は、`\k<`*name*`>` という表記を使用できます。この表記はあいまいではなく、8 進数の文字コードと混同することはありません。 同様に、`\xdd` などの 16 進数コードはあいまいではなく、前方参照と混同することはありません。 次の例では、文字列内の単語に使用される重複した文字を検索します。 例で定義している正規表現 `(\w)\1` は、次の要素で構成されています。 @@ -73,14 +76,14 @@ ms.lasthandoff: 10/18/2017 `\k'` *name* `'` - ここで、*name* は正規表現パターンで定義されたキャプチャ グループの名前です。 場合*名前*は正規表現パターンで定義されていない、解析エラーが発生し、正規表現エンジンは、スロー、です。 + ここで、*name* は正規表現パターンで定義されたキャプチャ グループの名前です。 *name* が正規表現パターンで定義されていない場合は、解析エラーが発生し、正規表現エンジンが をスローします。 次の例では、文字列内の単語に使用される重複した文字を検索します。 例で定義している正規表現 `(?\w)\k` は、次の要素で構成されています。 |要素|説明| |-------------|-----------------| -|`(?\w)`|単語文字と一致し、名前付きキャプチャ グループに割り当てる`char`です。| -|`\k`|値と同じでは、次の文字を一致、`char`キャプチャ グループです。| +|`(?\w)`|単語文字を検出し、`char` という名前のキャプチャ グループに割り当てます。| +|`\k`|`char` キャプチャ グループの値と同じ次の文字を検出します。| [!code-csharp[RegularExpressions.Language.Backreferences#2](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.backreferences/cs/backreference2.cs#2)] [!code-vb[RegularExpressions.Language.Backreferences#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.backreferences/vb/backreference2.vb#2)] @@ -97,15 +100,15 @@ ms.lasthandoff: 10/18/2017 |パターン|説明| |-------------|-----------------| -|`(?<1>a)`|文字と一致"a"と、その結果、キャプチャ グループを名前付き割り当て`1`です。| -|`(?<1>\1b)*`|という名前のグループの一致 0 または 1 が発生`1`"b"、および割り当てという名前のキャプチャ グループに結果と共に`1`です。| +|`(?<1>a)`|文字 "a" を検出し、結果を `1` という名前のキャプチャ グループに割り当てます。| +|`(?<1>\1b)*`|`1` という名前のグループの 0 個または 1 個の出現箇所を "b" と共に検出し、結果を `1` という名前のキャプチャ グループに割り当てます。| [!code-csharp[RegularExpressions.Language.Backreferences#4](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.backreferences/cs/backreference4.cs#4)] [!code-vb[RegularExpressions.Language.Backreferences#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.backreferences/vb/backreference4.vb#4)] 正規表現を入力文字列 ("aababb") と比較する際、正規表現エンジンは次の操作を実行します。 -1. 文字列の先頭から開始し、式 `(?<1>a)` で "a" を検出します。 値、`1`グループが、"a"です。 +1. 文字列の先頭から開始し、式 `(?<1>a)` で "a" を検出します。 グループ `1` の値が "a" になります。 2. 次の文字に進み、式 `\1b` で文字列 "ab" を検出します。 次に、その結果 "ab" を `\1` に割り当てます。 @@ -113,7 +116,7 @@ ms.lasthandoff: 10/18/2017 この例では、`*` はループ量指定子であり、正規表現エンジンが定義したパターンを照合できなくなるまで、繰り返し評価されます。 ループ量指定子によってグループの定義はクリアされません。 - グループで部分文字列がキャプチャされなかった場合、そのグループへの前方参照は未定義になり、一致することはありません。 正規表現パターンに例を示しますこの`\b(\p{Lu}{2})(\d{2})?(\p{Lu}{2})\b`、次のように定義されています。 + グループで部分文字列がキャプチャされなかった場合、そのグループへの前方参照は未定義になり、一致することはありません。 次のように定義されている正規表現パターン `\b(\p{Lu}{2})(\d{2})?(\p{Lu}{2})\b` を例として示します。 |パターン|説明| |-------------|-----------------| @@ -128,5 +131,5 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[RegularExpressions.Language.Backreferences#5](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.backreferences/cs/backreference5.cs#5)] [!code-vb[RegularExpressions.Language.Backreferences#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.backreferences/vb/backreference5.vb#5)] -## 関連項目 +## 参照 [正規表現言語 - クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) diff --git a/docs/standard/base-types/basic-manipulations.md b/docs/standard/base-types/basic-manipulations.md index e64a2160214..51d502e262d 100644 --- a/docs/standard/base-types/basic-manipulations.md +++ b/docs/standard/base-types/basic-manipulations.md @@ -11,20 +11,24 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: strings [.NET Framework], examples +helpviewer_keywords: +- strings [.NET Framework], examples ms.assetid: 121d1eae-251b-44c0-8818-57da04b8215e -caps.latest.revision: "7" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: ee9c00d02b7b5d1f391ce60f843c18445efd6edc -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 8d3d5351a0a639a3f0b674640bcaaf7321ca0d76 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- -# 方法: .NET での基本的な文字列操作の実行 -次の例で説明した手法のいくつか、[基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md)実際のアプリケーションで見つかる可能性があるように文字列操作を実行するクラスを構築するためにトピックです。 `MailToData` クラスは、個人の名前とアドレスを個別のプロパティに格納し、`City`、`State`、`Zip` フィールドを組み合わせて、ユーザーに表示する1 つの文字列にする方法を提供します。 さらに、このクラスを使用して、ユーザーが市区町村、都道府県、および郵便番号情報を 1 つの文字列として入力することができます。アプリケーションは自動的に 1 つの文字列を解析し、対応するプロパティに適切な情報を入力します。 +# 方法: .NET の基本的な文字列操作を実行する +次の例では、「[基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md)」のトピックで説明したいくつかの方法を使用して、実際のアプリケーションで見られる方法で文字列の操作を実行するクラスを構築します。 `MailToData` クラスは、個人の名前とアドレスを個別のプロパティに格納し、`City`、`State`、`Zip` フィールドを組み合わせて、ユーザーに表示する1 つの文字列にする方法を提供します。 さらに、このクラスを使用して、ユーザーが市区町村、都道府県、および郵便番号情報を 1 つの文字列として入力することができます。アプリケーションは自動的に 1 つの文字列を解析し、対応するプロパティに適切な情報を入力します。 わかりやすいように、この例ではコマンド ライン インターフェイスによるコンソール アプリケーションを使用します。 @@ -34,5 +38,5 @@ ms.lasthandoff: 10/18/2017 上記のコードを実行すると、ユーザーは自分の名前とアドレスを入力するように求められます。 アプリケーションは、適切なプロパティに情報を格納し、市区町村、都道府県、および郵便番号情報を表示する 1 つの文字列を作成して、ユーザーに情報を表示します。 -## 関連項目 +## 参照 [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) diff --git a/docs/standard/base-types/basic-string-operations.md b/docs/standard/base-types/basic-string-operations.md index 41c306b45bb..e11d3710582 100644 --- a/docs/standard/base-types/basic-string-operations.md +++ b/docs/standard/base-types/basic-string-operations.md @@ -12,25 +12,28 @@ helpviewer_keywords: - strings [.NET Framework], basic string operations - custom strings ms.assetid: 8133d357-90b5-4b62-9927-43323d99b6b6 -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: f241b99f97cad081a65fd8654169e444a1b588cb -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 1ee53343a68a2c2169baefaebc68a817159d0313 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- -# .NET での基本的な文字列操作 -アプリケーションは、多くの場合、ユーザー入力に基づいてメッセージを構築することによってユーザーに応答します。 たとえば、Web サイトで、新たにログオンしたユーザーに対して、ユーザーの名前を含む特別なメッセージで応答することは珍しいことではありません。 いくつかのメソッド、クラスを使用すると、ユーザー インターフェイスに表示するカスタムの文字列を動的に構築します。 これらのメソッドでは、バイト配列から新しい文字列を作成する、文字列の値を比較する、既存の文字列を変更するなどのいくつかの基本的な文字列操作を実行することもできます。 +# .NET の基本的な文字列操作 +アプリケーションは、多くの場合、ユーザー入力に基づいてメッセージを構築することによってユーザーに応答します。 たとえば、Web サイトで、新たにログオンしたユーザーに対して、ユーザーの名前を含む特別なメッセージで応答することは珍しいことではありません。 クラスと クラスのいくつかのメソッドを使用すると、ユーザー インターフェイスに表示するカスタム文字列を動的に構築できます。 これらのメソッドでは、バイト配列から新しい文字列を作成する、文字列の値を比較する、既存の文字列を変更するなどのいくつかの基本的な文字列操作を実行することもできます。 ## このセクションの内容 [新しい文字列の作成](../../../docs/standard/base-types/creating-new.md) - オブジェクトを文字列に変換し、文字列を結合するための基本的な方法について説明します。 + オブジェクトを文字列に変換し、文字列を結合する基本的な方法について説明します。 [文字のトリムと削除](../../../docs/standard/base-types/trimming.md) - トリミングまたは文字列の文字を削除する方法について説明します。 + 文字列内の文字をトリミングまたは削除する方法について説明します。 [文字列の埋め込み](../../../docs/standard/base-types/padding.md) 文字列に文字または空白を挿入する方法について説明します。 @@ -42,14 +45,14 @@ ms.lasthandoff: 10/18/2017 文字列内の文字の大文字と小文字を変更する方法について説明します。 [StringBuilder クラスの使用](../../../docs/standard/base-types/stringbuilder.md) - 文字列を動的オブジェクトを作成および変更方法について説明します、クラスです。 + クラスの動的な文字列オブジェクトを作成および変更する方法について説明します。 [方法: 基本的な文字列操作を実行する](../../../docs/standard/base-types/basic-manipulations.md) 基本的な文字列操作の使用を示します。 ## 関連項目 [.NET での型変換](../../../docs/standard/base-types/type-conversion.md) - 1 つの型を別の型に変換する方法について説明します。 + 型を変換する方法について説明します。 [型の書式設定](../../../docs/standard/base-types/formatting-types.md) - 書式指定子を使用して文字列を書式設定する方法について説明します。 + 書式指定子を使用して文字列の書式を設定する方法について説明します。 diff --git a/docs/standard/base-types/best-practices-strings.md b/docs/standard/base-types/best-practices-strings.md index 724371c8334..a60d9f9d283 100644 --- a/docs/standard/base-types/best-practices-strings.md +++ b/docs/standard/base-types/best-practices-strings.md @@ -1,5 +1,5 @@ --- -title: ".NET で文字列を使用するためのベスト プラクティス" +title: ".NET の文字列を使用するためのベスト プラクティス" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -23,20 +23,23 @@ helpviewer_keywords: - comparing strings - strings [.NET Framework],comparing ms.assetid: b9f0bf53-e2de-4116-8ce9-d4f91a1df4f7 -caps.latest.revision: "35" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: d187096fee5119a22d886029cd63173e4ca1c8ec -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a4b92cd9d6b880f23d6acaf9e38e685184ec3bfe +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- -# .NET で文字列を使用するためのベスト プラクティス -.NET は、ローカライズされたやグローバル化されたアプリケーションを開発するための広範なサポートを提供し、並べ替えおよび文字列の表示などの一般的な操作を実行するときに、現在のカルチャまたは特定のカルチャの規則を適用するが容易です。 しかし、文字列の並べ替えや比較の操作は、必ずしもカルチャに依存するとは限りません。 たとえば、アプリケーションが内部で使用する文字列は、通常、すべてのカルチャで同じように処理される必要があります。 XML タグ、HTML タグ、ユーザー名、ファイル パス、システム オブジェクトの名前などのカルチャに依存しない文字列データがカルチャに依存するかのように解釈されると、アプリケーション コードで軽度のバグが発生したり、パフォーマンスが低下したり、場合によってはセキュリティの問題を引き起こしたりする可能性があります。 +# .NET の文字列を使用するためのベスト プラクティス + .NET には、ローカライズされたアプリケーションやグローバル化されたアプリケーションを開発するための広範なサポートが用意されており、文字列の並べ替えや表示などの一般的な操作を実行するときに、現在のカルチャの規則や特定のカルチャの規則を簡単に適用できるようになっています。 しかし、文字列の並べ替えや比較の操作は、必ずしもカルチャに依存するとは限りません。 たとえば、アプリケーションが内部で使用する文字列は、通常、すべてのカルチャで同じように処理される必要があります。 XML タグ、HTML タグ、ユーザー名、ファイル パス、システム オブジェクトの名前などのカルチャに依存しない文字列データがカルチャに依存するかのように解釈されると、アプリケーション コードで軽度のバグが発生したり、パフォーマンスが低下したり、場合によってはセキュリティの問題を引き起こしたりする可能性があります。 - このトピックは、文字列の並べ替え、比較、および .NET での大文字小文字の区別方法を調べて、適切な文字列処理メソッドを選択するための推奨事項し、文字列処理メソッドに関する追加情報を示します。 また、数値データ、日時データなど、書式付きデータを表示および格納のために処理する方法についても説明します。 + このトピックでは、.NET の文字列の並べ替え、比較、および大文字と小文字の区別のメソッドについて検討し、適切な文字列処理メソッドを選択するための推奨事項と、文字列処理メソッドに関する追加情報を紹介します。 また、数値データ、日時データなど、書式付きデータを表示および格納のために処理する方法についても説明します。 このトピックは、次のセクションで構成されています。 @@ -48,7 +51,7 @@ ms.lasthandoff: 10/18/2017 - [メソッド呼び出しに使用する StringComparison メンバーの選択](#choosing_a_stringcomparison_member_for_your_method_call) -- [.NET の共通の文字列比較メソッド](#common_string_comparison_methods_in_the_net_framework) +- [.NET の一般的な文字列比較メソッド](#common_string_comparison_methods_in_the_net_framework) - [間接的に文字列比較を実行するメソッド](#methods_that_perform_string_comparison_indirectly) @@ -244,13 +247,13 @@ ms.lasthandoff: 10/18/2017 |----------|--------------|-----------------------------------------------------| |大文字と小文字が区別される内部識別子。

XML や HTTP などの標準の、大文字と小文字が区別される識別子。

大文字と小文字が区別されるセキュリティ関連の設定。|バイトが正確に一致する非言語的識別子。|| |大文字と小文字が区別されない内部識別子。

XML や HTTP などの標準の、大文字と小文字が区別されない識別子。

ファイル パス。

レジストリのキーと値。

環境変数。

リソース識別子 (ハンドル名など)。

大文字と小文字が区別されないセキュリティ関連の設定。|大文字と小文字が区別されない、言語的な意味を持たない識別子 (ほとんどの Windows システム サービスで格納されるデータなど)。|| -|永続化される、言語的な意味を持つデータの一部。

一定の並べ替え順序を必要とする言語的なデータの表示。|カルチャに依存しないが、言語的な意味を持つデータ。|

または

| -|ユーザーに表示されるデータ。

ほとんどのユーザー入力。|特定の言語の規則を必要とするデータ。|

または

| +|永続化される、言語的な意味を持つデータの一部。

一定の並べ替え順序を必要とする言語的なデータの表示。|カルチャに依存しないが、言語的な意味を持つデータ。|

- または -

| +|ユーザーに表示されるデータ。

ほとんどのユーザー入力。|特定の言語の規則を必要とするデータ。|

- または -

| [ページのトップへ](#top) -## .NET の共通の文字列比較メソッド +## .NET の一般的な文字列比較メソッド 以降では、文字列比較でよく使用されるメソッドについて説明します。 ### String.Compare @@ -374,5 +377,5 @@ ms.lasthandoff: 10/18/2017 18.02.1905 15:12 ``` -## 関連項目 +## 参照 [文字列の操作](../../../docs/standard/base-types/manipulating-strings.md) diff --git a/docs/standard/base-types/changing-case.md b/docs/standard/base-types/changing-case.md index e2e48a0936e..6e9b95449d1 100644 --- a/docs/standard/base-types/changing-case.md +++ b/docs/standard/base-types/changing-case.md @@ -19,27 +19,30 @@ helpviewer_keywords: - uppercase - lowercase ms.assetid: 6805f81b-e9ad-4387-9f4c-b9bdb21b87c0 -caps.latest.revision: "15" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 8b03dec350d38d15faaa6a0afc6a1f2c31d5c58f -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a3d845f53238f3b5b1744c13de9800e0d8f65dbc +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- -# .NET での変更 +# .NET の大文字と小文字の変更 ユーザーからの入力を受け付けるアプリケーションを記述する場合、ユーザーがデータ入力に使用するケースを正確に予測することはできません。 多くの場合、特にユーザー インターフェイスにそれを表示する場合には、文字列に一貫性のあるケースを使用することが求められます。 次の表は、3 つのケース変更方式を示しています。 最初の 2 つの方式は、カルチャを受け入れるオーバーロードを提供します。 -|メソッド名|用途| +|メソッド名|使用| |-----------------|---------| ||文字列内のすべての文字を大文字に変換します。| ||文字列内のすべての文字を小文字に変換します。| ||文字列をタイトル ケースに変換します。| > [!WARNING] -> の方式を使用して、文字列を比較したり等しいかどうかをテストしたりする目的で、それらの文字列を変換するべきではないことに注意してください。 詳細については、次を参照してください。、[大小混合文字の文字列を比較する](#Comparing)セクションです。 +> の方式を使用して、文字列を比較したり等しいかどうかをテストしたりする目的で、それらの文字列を変換するべきではないことに注意してください。 詳細については、「[大小混合文字の文字列を比較する](#Comparing)」セクションを参照してください。 ## 大小混合文字の文字列を比較する @@ -55,7 +58,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Strings.ChangingCase#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.ChangingCase/cs/Example.cs#1)] [!code-vb[Strings.ChangingCase#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.ChangingCase/vb/Example.vb#1)] - 前の例は、既定でカルチャに依存しています。これには、現在のカルチャのケース表記規則が適用されます。 カルチャに依存しないケース変更を実行したり、特定のカルチャの大文字と小文字の表記規則を適用するを使用して、メソッドはオーバー ロードし、値を指定してまたはに指定されたカルチャを表すオブジェクト*カルチャ*パラメーター。 使用する方法を示す例については、 、カルチャに依存しないケース変更を実行する方法を確認する[カルチャに依存しないケース変更の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md)です。 + 前の例は、既定でカルチャに依存しています。これには、現在のカルチャのケース表記規則が適用されます。 カルチャに依存しないケース変更を実行したり、特定のカルチャのケース表記規則を適用したりするには、 メソッドのオーバーロードを使用して、*culture* パラメーターに指定のカルチャを表す または オブジェクトの値を提供します。 メソッドを使用してカルチャに依存しないケース変更を実行する方法を示す例については、「[カルチャを認識しない大文字と小文字の変更の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md)」を参照してください。 ## ToLower メソッドは、前のメソッドと似ていますが、代わりに文字列内のすべての文字を小文字に変換します。 次の例では、文字列 "Hello World!" を 小文字に変換します。 @@ -63,7 +66,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Strings.ChangingCase#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.ChangingCase/cs/Example.cs#2)] [!code-vb[Strings.ChangingCase#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.ChangingCase/vb/Example.vb#2)] - 前の例は、既定でカルチャに依存しています。これには、現在のカルチャのケース表記規則が適用されます。 カルチャに依存しないケース変更を実行したり、特定のカルチャの大文字と小文字の表記規則を適用するを使用して、メソッドはオーバー ロードし、値を指定してまたはに指定されたカルチャを表すオブジェクト*カルチャ*パラメーター。 使用する方法を示す例については、 、カルチャに依存しないケース変更を実行する方法を確認する[カルチャに依存しないケース変更の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md)です。 + 前の例は、既定でカルチャに依存しています。これには、現在のカルチャのケース表記規則が適用されます。 カルチャに依存しないケース変更を実行したり、特定のカルチャのケース表記規則を適用したりするには、 メソッドのオーバーロードを使用して、*culture* パラメーターに指定のカルチャを表す または オブジェクトの値を提供します。 メソッドを使用してカルチャに依存しないケース変更を実行する方法を示す例については、「[カルチャを認識しない大文字と小文字の変更の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md)」を参照してください。 ## ToTitleCase は、各単語の最初の文字を大文字に変換し、残りの文字を小文字に変換します。 ただし、すべて大文字である単語は頭字語であると想定されて、変換されません。 @@ -77,6 +80,6 @@ ms.lasthandoff: 11/21/2017 カルチャに依存していても、 メソッドは言語的に正しい大文字小文字の規則を提供しないことに注意してください。 たとえば、前の例で、メソッドは "a tale of two cities" を "A Tale Of Two Cities" に変換します。 しかし、en-US カルチャで言語的に正しいタイトルの大文字小文字の表記は "A Tale of Two Cities" です。 -## 関連項目 +## 参照 [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) [カルチャを認識しない文字列操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md) diff --git a/docs/standard/base-types/character-encoding.md b/docs/standard/base-types/character-encoding.md index 6cf44be9dff..9b6df239250 100644 --- a/docs/standard/base-types/character-encoding.md +++ b/docs/standard/base-types/character-encoding.md @@ -1,7 +1,7 @@ --- -title: ".NET でのエンコードの文字" +title: ".NET での文字エンコード" ms.custom: -ms.date: 03/30/2017 +ms.date: 12/22/2017 ms.prod: .net ms.reviewer: ms.suite: @@ -16,29 +16,32 @@ helpviewer_keywords: - encoding, choosing - encoding, fallback strategy ms.assetid: bf6d9823-4c2d-48af-b280-919c5af66ae9 -caps.latest.revision: "33" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: ce7c8ff2154b8503b0ef73954464f380f520c3f9 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: ac24e3a685c20445c473f0f5222ddba72b6b098c +ms.sourcegitcommit: cf22b29db780e532e1090c6e755aa52d28273fa6 ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 02/01/2018 --- -# .NET でのエンコードの文字 +# .NET での文字エンコード 文字は、さまざまな方法で表現できる抽象エンティティです。 文字エンコーディングとは、サポートされている文字セットの各文字を、その文字を表す値と組み合わせる体系です。 たとえばモールス符号は、ローマ字の各文字を、電信線での送信に適したドットとダッシュのパターンと組み合わせる文字エンコーディングです。 コンピューターの文字エンコーディングは、サポートされている文字セットの各文字を、その文字を表す数値と組み合わせます。 文字エンコーディングには、次の 2 つの異なるコンポーネントがあります。 - エンコーダー。文字シーケンスを数値 (バイト) シーケンスに変換します。 - デコーダー。バイト シーケンスを文字シーケンスに変換します。 - 文字エンコーディングは、エンコーダーとデコーダーの動作を決める規則を表します。 たとえば、 クラスは、1 ~ 4 バイトを使用して 1 つの Unicode 文字を表現する UTF-8 (8-bit Unicode Transformation Format) をエンコードおよびデコードするための規則を表します。 エンコードとデコードに検証を含めることもできます。 たとえば、 クラスは、すべてのサロゲートを検証して、有効なサロゲート ペアが構成されていることを確認します (サロゲート ペアは、U+D800 ~ U+DBFF の範囲のコード ポイントを持つ文字と、それに続く U+DC00 ~ U+DFFF の範囲のコード ポイントを持つ文字で構成されます)。エンコーダーが無効な文字を処理する方法や、デコーダーが無効なバイトを処理する方法は、フォールバック ストラテジによって決まります。 + 文字エンコーディングは、エンコーダーとデコーダーの動作を決める規則を表します。 たとえば、 クラスは、1 ~ 4 バイトを使用して 1 つの Unicode 文字を表現する UTF-8 (8-bit Unicode Transformation Format) をエンコードおよびデコードするための規則を表します。 エンコードとデコードに検証を含めることもできます。 たとえば、 クラスは、すべてのサロゲートを検証して、有効なサロゲート ペアが構成されていることを確認します (サロゲート ペアは、U+D800 ~ U+DBFF の範囲のコード ポイントを持つ文字と、それに続く U+DC00 ~ U+DFFF の範囲のコード ポイントを持つ文字で構成されます)。エンコーダーが無効な文字を処理する方法や、デコーダーが無効なバイトを処理する方法は、フォールバック ストラテジによって決まります。 > [!WARNING] -> .NET のエンコーディング クラスは、格納および文字データを変換する方法を提供します。 バイナリ データを文字列形式で格納する目的では使用しないでください。 エンコーディング クラスを使用してバイナリ データを文字列形式に変換すると、使用されているエンコーディングによっては、予期しない動作が発生したり、不正確なデータや破損したデータが生成されたりする可能性があります。 バイナリ データを文字列形式に変換するには、 メソッドを使用します。 +> .NET のエンコーディング クラスは、文字データを格納および変換するためのものです。 バイナリ データを文字列形式で格納する目的では使用しないでください。 エンコーディング クラスを使用してバイナリ データを文字列形式に変換すると、使用されているエンコーディングによっては、予期しない動作が発生したり、不正確なデータや破損したデータが生成されたりする可能性があります。 バイナリ データを文字列形式に変換するには、 メソッドを使用します。 - .NET は、utf-16 エンコードを使用 (によって表される、クラス) の文字と文字列を表します。 共通言語ランタイムをターゲットとするアプリケーションは、エンコーダーを使用して、共通言語ランタイムによってサポートされている Unicode 文字表現を他のエンコーディング方式に変換し、 デコーダーを使用して、Unicode 以外のエンコーディングの文字を Unicode に変換します。 + .NET では ( クラスによって表される) UTF-16 エンコーディングを使って、文字と文字列を表します。 共通言語ランタイムをターゲットとするアプリケーションは、エンコーダーを使用して、共通言語ランタイムによってサポートされている Unicode 文字表現を他のエンコーディング方式に変換し、 デコーダーを使用して、Unicode 以外のエンコーディングの文字を Unicode に変換します。 このトピックは、次のセクションで構成されています。 @@ -54,41 +57,41 @@ ms.lasthandoff: 11/21/2017 ## .NET でのエンコード - .NET のエンコーディングのクラスから継承するすべての文字、クラスは、すべての文字エンコーディングに共通の機能を定義する抽象クラスです。 .NET に実装されている個々のエンコーディング オブジェクトにアクセスするには次の方法があります。 + .NET のすべての文字エンコーディング クラスは、すべての文字エンコーディングに共通の機能を定義する抽象クラスの クラスを継承します。 .NET に実装されている個々のエンコーディング オブジェクトにアクセスするには次の方法があります。 -- 静的プロパティを使用して、クラスは、オブジェクトを返す .NET (ASCII、utf-7、utf-8、utf-16、および utf-32) で利用できる標準の文字エンコーディングを表すです。 たとえば、 プロパティは オブジェクトを返します。 各オブジェクトでは、エンコードできない文字列とデコードできないバイトを処理するために、置換フォールバックが使用されます (詳しくは、「 [Replacement Fallback](../../../docs/standard/base-types/character-encoding.md#Replacement) 」セクションをご覧ください。) +- クラスの静的プロパティを使います。これらのプロパティは、.NET で使用できる標準の文字エンコーディング (ASCII、UTF-7、UTF-8、UTF-16、および UTF-32) を表すオブジェクトを返します。 たとえば、 プロパティは オブジェクトを返します。 各オブジェクトでは、エンコードできない文字列とデコードできないバイトを処理するために、置換フォールバックが使用されます (詳しくは、「 [Replacement Fallback](../../../docs/standard/base-types/character-encoding.md#Replacement) 」セクションをご覧ください。) - エンコーディングのクラス コンストラクターを呼び出します。 ASCII、UTF-7、UTF-8、UTF-16、および UTF-32 の各エンコーディングのオブジェクトは、この方法でインスタンス化できます。 既定では、各オブジェクトはエンコードできない文字列とデコードできないバイトを処理するために置換フォールバックを使用します。ただし、代わりに例外がスローされるように指定することもできます (詳しくは、「 [Replacement Fallback](../../../docs/standard/base-types/character-encoding.md#Replacement) 」セクションおよび「 [Exception Fallback](../../../docs/standard/base-types/character-encoding.md#Exception) 」セクションをご覧ください。) - コンストラクターを呼び出して、エンコーディングを表す整数を渡します。 エンコードできない文字列とデコードできないバイトの処理には、標準エンコーディングのエンコーディング オブジェクトでは置換フォールバックが、コード ページ エンコーディングと 2 バイト文字セット (DBCS) エンコーディングのエンコーディング オブジェクトでは最適フォールバックが使用されます (詳しくは、「 [Best-Fit Fallback](../../../docs/standard/base-types/character-encoding.md#BestFit) 」セクションをご覧ください。) -- 呼び出す、標準、コード ページ、または DBCS のエンコーディングを .NET で使用可能なを返すメソッド。 オーバーロードを使用すると、エンコーダーおよびデコーダーの両方のフォールバック オブジェクトを指定できます。 +- メソッドを呼び出します。このメソッドは、.NET で使用できる任意のエンコーディング (標準、コード ページ、または DBCS) を返します。 オーバーロードを使用すると、エンコーダーおよびデコーダーの両方のフォールバック オブジェクトを指定できます。 > [!NOTE] > Unicode 規格では、サポートされるすべてのスクリプトについて、各文字にコード ポイント (数値) と名前を割り当てています。 たとえば、文字 "A" は U+0041 というコード ポイントと、"LATIN CAPITAL LETTER A" という名前で表されます。 UTF (Unicode Transformation Format) エンコーディングは、そのコード ポイントを 1 つ以上のバイトのシーケンスにエンコードする方法を定義します。 Unicode エンコーディング方式を使用すると、任意の文字セットの文字を 1 つのエンコーディング方式で表現できるため、国際対応アプリケーションの開発が簡素化されます。 これにより、アプリケーション開発者が、特定の言語または書記体系の文字を表すために使用されるエンコーディング方式を追跡する必要はなくなります。また、データを破損することなく、各国のシステム間でデータを共有できます。 > -> .NET では、Unicode 規格によって定義されている UTF-8、UTF-16、および UTF-32 の 3 つのエンコーディングをサポートしています。 詳しくは、 [Unicode ホーム ページ](http://go.microsoft.com/fwlink/?LinkId=37123)の Unicode 標準をご覧ください。 +> .NET では、Unicode 規格によって定義されている UTF-8、UTF-16、および UTF-32 の 3 つのエンコーディングをサポートしています。 詳しくは、[Unicode ホーム ページ](http://www.unicode.org/)の Unicode 標準をご覧ください。 - .NET で使用可能なすべてのエンコーディングに関する情報を取得するには呼び出すことによって、メソッドです。 .NET でサポートされている文字エンコーディング システムを次の表に示します。 + .NET で使えるすべてのエンコーディングに関する情報を取得するには、 メソッドを呼び出します。 .NET でサポートされている文字エンコーディング システムを次の表に示します。 |エンコード|クラス|説明|長所/短所| |--------------|-----------|-----------------|-------------------------------| |ASCII||バイトの下位 7 ビットを使用して、限られた範囲の文字をエンコードします。|ASCII エンコーディングでは、U+0000 から U+007F までの文字値しかサポートされていないため、ほとんどの場合、国際対応アプリケーションでは ASCII エンコーディングの使用は不適切です。| -|UTF-7||文字を 7 ビット ASCII 文字のシーケンスとして表します。 ASCII 以外の Unicode 文字は、ASCII 文字のエスケープ シーケンスによって表します。|UTF-7 は、電子メールやニュースグループなどのプロトコルをサポートします。 ただし、UTF-7 は特に安全でも堅牢でもありません。 場合によっては、1 ビットの変更により、UTF-7 文字列全体の解釈が完全に変わる場合があります。 他の場合には、異なる UTF-7 文字列がエンコードによって同じテキストになる可能性もあります。 ASCII 以外の文字を含むシーケンスの場合、UTF-7 は UTF-8 よりも多くの空間を必要とし、エンコードとデコードに時間がかかります。 したがって、可能であれば、UTF-7 ではなく UTF-8 を使用してください。| +|UTF-7||文字を 7 ビット ASCII 文字のシーケンスとして表します。 ASCII 以外の Unicode 文字は、ASCII 文字のエスケープ シーケンスによって表します。|UTF-7 は、メールやニュースグループなどのプロトコルをサポートします。 ただし、UTF-7 は特に安全でも堅牢でもありません。 場合によっては、1 ビットの変更により、UTF-7 文字列全体の解釈が完全に変わる場合があります。 他の場合には、異なる UTF-7 文字列がエンコードによって同じテキストになる可能性もあります。 ASCII 以外の文字を含むシーケンスの場合、UTF-7 は UTF-8 よりも多くの空間を必要とし、エンコードとデコードに時間がかかります。 したがって、可能であれば、UTF-7 ではなく UTF-8 を使用してください。| |UTF-8||各 Unicode コード ポイントが、1 バイトから 4 バイトのシーケンスとして表現されます。|UTF-8 では、8 ビット データ サイズがサポートされており、既存の多くのオペレーティング システムに対応できます。 ASCII 範囲の文字については、UTF-8 は ASCII エンコーディングと一致し、より広範な文字を提供します。 ただし、CJK (中国語、日本語、韓国語) スクリプトでは、UTF-8 の各文字に 3 バイトが必要となることがあり、データ サイズが UTF-16 より大きくなる可能性があります。 ただし、CJK 範囲によるサイズの増加が HTML タグなどの ASCII データのサイズによって相殺されることもあります。| |UTF-16||各 Unicode コード ポイントが、1 つまたは 2 つの 16 ビット整数のシーケンスとして表現されます。 ほとんどの一般的な Unicode 文字で必要とされる UTF-16 コード ポイントは 1 つだけです。ただし、Unicode の補助文字 (U+10000 以上) には 2 つの UTF-16 サロゲート コード ポイントが必要です。 リトル エンディアンとビッグ エンディアンの両方のバイト順をサポートしています。|UTF-16 エンコーディングは、共通言語ランタイムでは および の値を表現するために、Windows オペレーティング システムでは `WCHAR` の値を表現するために使用されています。| |UTF-32||各 Unicode コード ポイントが 32 ビット整数として表現されます。 リトル エンディアンとビッグ エンディアンの両方のバイト順をサポートしています。|UTF-32 エンコーディングは、エンコードされた空白がきわめて重要な意味を持つオペレーティング システムで、アプリケーションが UTF-16 エンコーディングのサロゲート コード ポイント動作を回避する必要がある場合に使用します。 ディスプレイ上でレンダリングされる 1 つのグリフも複数の UTF-32 文字でエンコードされることがあります。| -|ANSI/ISO エンコーディング||さまざまなコード ページがサポートされています。 Windows オペレーティング システムでは、特定の言語または言語グループをサポートするためにコード ページが使用されます。 .NET でサポートされるコード ページを示す表を参照してください、クラスです。 特定のコード ページのエンコーディング オブジェクトを取得するには、 メソッドを呼び出します。|コード ページには、0 から始まる 256 個のコード ポイントが含まれています。 コード ポイント 0 ~ 127 は、ほとんどのコード ページで ASCII 文字セットを表しますが、コード ポイント 128 ~ 255 が表す文字は、コード ページによって異なります。 たとえば、コード ページ 1252 には、英語、ドイツ語、フランス語などのラテン語書記体系の文字を表す文字コードが含まれています。 このコード ページ 1252 の最後の 128 個のコード ポイントには、アクセント記号付き文字が含まれています。 また、コード ページ 1253 には、ギリシャ語書記体系で必要とされる文字コードが含まれています。 このコード ページ 1253 の最後の 128 個のコード ポイントには、ギリシャ文字が含まれています。 このため、ANSI コード ページに依存するアプリケーションでギリシャ語とドイツ語を同じテキスト ストリームに格納する場合には、参照先コード ページを示す識別子を含める必要があります。| +|ANSI/ISO エンコーディング||さまざまなコード ページがサポートされています。 Windows オペレーティング システムでは、特定の言語または言語グループをサポートするためにコード ページが使用されます。 .NET でサポートされているコード ページの一覧表については、 クラスを参照してください。 特定のコード ページのエンコーディング オブジェクトを取得するには、 メソッドを呼び出します。|コード ページには、0 から始まる 256 個のコード ポイントが含まれています。 コード ポイント 0 ~ 127 は、ほとんどのコード ページで ASCII 文字セットを表しますが、コード ポイント 128 ~ 255 が表す文字は、コード ページによって異なります。 たとえば、コード ページ 1252 には、英語、ドイツ語、フランス語などのラテン語書記体系の文字を表す文字コードが含まれています。 このコード ページ 1252 の最後の 128 個のコード ポイントには、アクセント記号付き文字が含まれています。 また、コード ページ 1253 には、ギリシャ語書記体系で必要とされる文字コードが含まれています。 このコード ページ 1253 の最後の 128 個のコード ポイントには、ギリシャ文字が含まれています。 このため、ANSI コード ページに依存するアプリケーションでギリシャ語とドイツ語を同じテキスト ストリームに格納する場合には、参照先コード ページを示す識別子を含める必要があります。| |2 バイト文字セット (DBCS) エンコーディング||中国語、日本語、韓国語など、256 個以上の文字から成る言語をサポートします。 DBCS では、コード ポイントのペア (2 バイト) が 1 つの文字を表します。 DBCS エンコーディングでは、 プロパティは `false` を返します。 特定の DBCS のエンコーディング オブジェクトを取得するには、 メソッドを呼び出します。|DBCS では、コード ポイントのペア (2 バイト) が 1 つの文字を表します。 アプリケーションで DBCS データを処理する場合、DBCS 文字の最初のバイト (先頭バイト) は、その後に続く後続バイトと組み合わせて処理されます。 このスキームでは、日本語や中国語など、2 種類の言語を組み合わせて同じデータ ストリームで使用することはできません。これは、2 バイト コード ポイントのペアが表す文字が、コード ページによって異なるためです。| これらのエンコーディングを使用することにより、Unicode 文字だけでなく、レガシ アプリケーションで最もよく使用されているエンコーディングにも対応できます。 また、 から派生するクラスを定義し、そのメンバーをオーバーライドして、カスタム エンコーディングを作成することもできます。 ### プラットフォームに関する注意事項: [!INCLUDE[net_core](../../../includes/net-core-md.md)] - 既定で、 [!INCLUDE[net_core](../../../includes/net-core-md.md)] では、コード ページ 28591 以外のコード ページ エンコーディングや Unicode エンコーディング (UTF-8 や UTF-16 など) を使用できません。 ただし、については、標準の Windows アプリにアプリをターゲットと .NET のコード ページ エンコーディングを追加することができます。 詳細については、「 」のトピックを参照してください。 + 既定で、 [!INCLUDE[net_core](../../../includes/net-core-md.md)] では、コード ページ 28591 以外のコード ページ エンコーディングや Unicode エンコーディング (UTF-8 や UTF-16 など) を使用できません。 ただし、使うアプリに、.NET を対象とする標準の Windows アプリに含まれているコード ページ エンコーディングを追加できます。 詳細については、「 」のトピックを参照してください。 ## エンコーディング クラスの選択 - アプリケーションで使用するエンコーディングを選択できる場合は、Unicode エンコーディング (できれば または ) を使用するようにしてください (も .NET では、Unicode エンコーディングには、サポートしています)。 + アプリケーションで使用するエンコーディングを選択できる場合は、Unicode エンコーディング (できれば または ) を使用するようにしてください (.NET でサポートされている Unicode エンコーディングには、そのほかに もあります)。 ASCII エンコーディング () を使用しようとしている場合は、代わりに を選択してください。 この 2 つのエンコーディングは、ASCII 文字セットに対する動作は変わりませんが、 には次のような利点があります。 @@ -149,9 +152,12 @@ ms.lasthandoff: 11/21/2017 ターゲット エンコード内に厳密な一致がない文字について、エンコーダーは類似した文字へのマッピングを試みることができます (最適フォールバックは主にエンコード時の問題であり、デコード時の問題ではありません。 Unicode に正常にマッピングできない文字を含むコード ページはほとんどありません)。最適フォールバックは、 および の各オーバーロードによって取得されるコード ページ エンコーディングと 2 バイト文字セット エンコーディングの既定のフォールバック ストラテジです。 > [!NOTE] -> 理論上は、Unicode エンコーディングで指定された .NET のクラス (、および) 最適フォールバックの問題を回避するのに使用できるように、すべての文字セットのすべての文字をサポートします。 +> .NET の Unicode エンコーディング クラス (、および ) では、理論上すべての文字セットのすべての文字がサポートされているため、これらのクラスを使用すると最適フォールバックの問題を解消できます。 - 最適なストラテジはコード ページごとに異なるため、詳細には文書化されていません。 たとえば、全角のアルファベットがより一般的な半角のアルファベットにマッピングされるコード ページもあれば、 そのようなマッピングが行われないコード ページもあります。 積極的な最適ストラテジでも、一部のエンコーディングの一部の文字には可能な対応がない場合があります。 たとえば、中国語の漢字からコード ページ 1252 への適切なマッピングはありません。 その場合は、置換文字列が使用されます。 既定では、この文字列は単一の QUESTION MARK (疑問符) (U+003F) です。 + 最適なストラテジはコード ページごとに異なります。 たとえば、全角のアルファベットがより一般的な半角のアルファベットにマッピングされるコード ページもあれば、 そのようなマッピングが行われないコード ページもあります。 積極的な最適ストラテジでも、一部のエンコーディングの一部の文字には可能な対応がない場合があります。 たとえば、中国語の漢字からコード ページ 1252 への適切なマッピングはありません。 その場合は、置換文字列が使用されます。 既定では、この文字列は単一の QUESTION MARK (疑問符) (U+003F) です。 + +> [!NOTE] +> 最適なストラテジは、詳細には文書化されていません。 ただし、いくつかのコード ページは、[Unicode コンソーシアム](http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/)の Web サイトで文書化されています。 マッピング ファイルを解釈する方法について詳しくは、そのフォルダーの **readme.txt** ファイルをご覧ください。 次の例では、コード ページ 1252 (西ヨーロッパ言語の Windows コード ページ) を使用して、最適マッピングとその欠点を示しています。 まず、 メソッドを使用して、コード ページ 1252 のエンコーディング オブジェクトを取得します。 このエンコーディング オブジェクトは、サポートされていない Unicode 文字に対して既定で最適マッピングを使用します。 次に、スペースで区切られた 3 つの非 ASCII 文字 (CIRCLED LATIN CAPITAL LETTER S (U+24C8)、SUPERSCRIPT FIVE (U+2075)、および INFINITY (U+221E)) を含む文字列をインスタンス化します。 出力を見るとわかるように、この文字列をエンコードすると、スペースを除く元の 3 つの文字が、QUESTION MARK (U+003F)、DIGIT FIVE (U+0035)、および DIGIT EIGHT (U+0038) に置き換えられます。 DIGIT EIGHT は、サポートされていない INFINITY 文字の代替として最適とは言えません。QUESTION MARK は、元の文字に対応するマッピングがなかったことを示します。 @@ -175,7 +181,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.Encoding#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/replacementascii.cs#2)] [!code-vb[Conceptual.Encoding#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/replacementascii.vb#2)] - .NET を含む、クラスで、置換文字列に置き換える文字が、エンコードまたはデコード操作で正確にマップされていない場合。 この置換文字列は、既定では疑問符ですが、クラス コンストラクターのオーバーロードを呼び出して別の文字列を選択することもできます。 通常は単一の文字を使用しますが、単一でなくてもかまいません。 次の例では、置換文字列としてアスタリスク (*) を使用する オブジェクトをインスタンス化して、コード ページ 1252 のエンコーダーの動作を変更しています。 + .NET には、エンコード操作またはデコード操作で正確にマップできない文字を置換文字列に置き換える クラスと クラスが含まれています。 この置換文字列は、既定では疑問符ですが、クラス コンストラクターのオーバーロードを呼び出して別の文字列を選択することもできます。 通常は単一の文字を使用しますが、単一でなくてもかまいません。 次の例では、置換文字列としてアスタリスク (*) を使用する オブジェクトをインスタンス化して、コード ページ 1252 のエンコーダーの動作を変更しています。 [!code-csharp[Conceptual.Encoding#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/bestfit1a.cs#3)] [!code-vb[Conceptual.Encoding#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/bestfit1a.vb#3)] @@ -186,7 +192,7 @@ ms.lasthandoff: 11/21/2017 置換文字列としては、QUESTION MARK (U+003F) のほか、特に Unicode 文字列に正しく変換できないバイト シーケンスをデコードする場合に、Unicode REPLACEMENT CHARACTER (U+FFFD) がよく使用されます。 ただし、置換文字列は自由に選択できます。置換文字列に複数の文字を含めることもできます。 -### Exception Fallback +### 例外フォールバック 最適フォールバックや置換文字列を提供する代わりに、エンコーダーで一連の文字をエンコードできない場合に をスローしたり、デコーダーでバイト配列をデコードできない場合に をスローしたりすることもできます。 エンコード操作およびデコード操作で例外をスローするには、 メソッドに オブジェクトおよび オブジェクトを渡します。 次の例は、 クラスによる例外フォールバックを示しています。 [!code-csharp[Conceptual.Encoding#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/exceptionascii.cs#4)] @@ -267,7 +273,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.Encoding#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/custom1.cs#7)] [!code-vb[Conceptual.Encoding#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/custom1.vb#7)] -## 関連項目 +## 参照 diff --git a/docs/standard/base-types/common-type-system.md b/docs/standard/base-types/common-type-system.md index 538f6d8d6d9..8de651efa40 100644 --- a/docs/standard/base-types/common-type-system.md +++ b/docs/standard/base-types/common-type-system.md @@ -21,15 +21,18 @@ helpviewer_keywords: - namespaces [.NET Framework], types - types, about types ms.assetid: 53c57c96-83e1-4ee3-9543-9ac832671a89 -caps.latest.revision: "25" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 9f9952cfd6ed2d5bac66d1cd5e3c8eed7506cd5c -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 26ee5cffd5e04a8c78cf5913b286fadfaab03c7c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 共通型システム 共通型システム (CTS: Common Type System) は、共通言語ランタイムにおける型の宣言、使用、および管理の方法を定義しており、ランタイムによる言語間統合のサポートにおいても重要な役割を果たします。 共通型システムには次のような機能があります。 @@ -95,7 +98,7 @@ ms.lasthandoff: 11/21/2017 ### 構造体 - 構造体は、 から派生する から暗黙的に派生する値型です。 構造体は、メモリ要件が小さい値を表す場合や、厳密に型指定されたパラメーターを持つメソッドに対してパラメーターを値渡しする場合などに、非常に便利です。 .NET では、すべてのプリミティブ データ型 (、および) 構造体として定義されます。 + 構造体は、 から派生する から暗黙的に派生する値型です。 構造体は、メモリ要件が小さい値を表す場合や、厳密に型指定されたパラメーターを持つメソッドに対してパラメーターを値渡しする場合などに、非常に便利です。 .NET では、すべてのプリミティブ データ型 () が構造体として定義されています。 クラスと同様、構造体にもデータ (構造体のフィールド) と、そのデータに対して実行できる操作 (構造体のメソッド) が定義されます。 これは、 クラスと クラスで定義されている仮想メソッドなどのメソッドと、値型そのものに定義されているすべてのメソッドを、構造体に対して呼び出すことができることを意味します。 言い換えれば、構造体には、静的メソッドと非静的メソッドに加え、フィールド、プロパティ、およびイベントを持たせることができます。 構造体のインスタンスを作成したり、構造体をパラメーターとして渡したりできるほか、構造体をローカル変数として格納することも、別の値型または参照型のフィールドに格納することもできます。 構造体でインターフェイスを実装することもできます。 @@ -166,7 +169,7 @@ ms.lasthandoff: 11/21/2017 コールバック メソッドの場合のように、多くの場合、デリゲートは 1 つのメソッドのみを表すため、デリゲートを作成し、呼び出す以外の処理は必要ありません。 - .NET がのメソッドを提供する複数のメソッドを表すデリゲートをデリゲート メソッドをデリゲートの呼び出しリストに追加するなどの操作をサポートするクラス (、メソッド)、(、メソッドを削除します。メソッド)、呼び出しリストを取得しています (、メソッド)。 + 複数のメソッドを表すデリゲートの場合、.NET は デリゲート クラスのメソッドを提供し、デリゲートの呼び出しリスト ( メソッド) にメソッドを追加したり、メソッド ( メソッド) を削除したり、呼び出しリスト (メソッド) を取得したりする操作をサポートしています。 > [!NOTE] > C#、C++、および Visual Basic では、イベント ハンドラー デリゲートに対して、これらのメソッドを使用する必要はありません。これらの言語には、イベント ハンドラーの追加および削除に使用する構文が用意されているためです。 @@ -327,7 +330,7 @@ ms.lasthandoff: 11/21/2017 - 派生型で、継承された仮想メソッドをオーバーライドできます。 オーバーライドするメソッドでは、コンパイル時点の変数の型ではなく、実行時の値の型に基づいて呼び出される、メソッドの新しい定義を提供します。 メソッドが仮想メソッドをオーバーライドできるのは、その仮想メソッドが `final` としてマークされておらず、新しいメソッドのアクセシビリティがその仮想メソッドと少なくとも同じ場合に限られます。 -## 関連項目 +## 参照 [.NET クラス ライブラリ](http://go.microsoft.com/fwlink/?LinkID=217856) [共通言語ランタイム](../../../docs/standard/clr.md) [.NET での型変換](../../../docs/standard/base-types/type-conversion.md) diff --git a/docs/standard/base-types/comparing.md b/docs/standard/base-types/comparing.md index 99feb550dee..0cbfc514290 100644 --- a/docs/standard/base-types/comparing.md +++ b/docs/standard/base-types/comparing.md @@ -1,5 +1,5 @@ --- -title: ".NET における文字列の比較" +title: ".NET で文字列を比較する" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -24,20 +24,23 @@ helpviewer_keywords: - Equals method - StartsWith method ms.assetid: 977dc094-fe19-4955-98ec-d2294d04a4ba -caps.latest.revision: "15" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 34aa922155943d1b4d39de2e7c33ebc1228e1083 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a9c2597ed2321c7494eaf44c3c43c2edc4df1952 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- -# .NET における文字列の比較 +# .NET で文字列を比較する .NET は、文字列の値を比較するためのメソッドをいくつか提供します。 これらの値の比較メソッドとその説明を次の表に示します。 -|メソッド名|用途| +|メソッド名|使用| |-----------------|---------| ||2 つの文字列の値を比較します。 整数値を返します。| ||ローカル カルチャに関係なく、2 つの文字列を比較します。 整数値を返します。| @@ -53,9 +56,9 @@ ms.lasthandoff: 11/21/2017 |戻り値|条件| |------------------|---------------| -|負の整数|最初の文字列は、並べ替え順序が 2 番目の文字列の前に置かれます。

または

最初の文字列は `null`です。| -|0|最初の文字列と 2 番目の文字列は等価です。

または

両方の文字列が `null`です。| -|正の整数

または

1|最初の文字列は、並べ替え順序が 2 番目の文字列の後に続きます。

または

第 2 文字列は `null`です。| +|負の整数|最初の文字列は、並べ替え順序が 2 番目の文字列の前に置かれます。

- または -

最初の文字列は `null`です。| +|0|最初の文字列と 2 番目の文字列は等価です。

- または -

両方の文字列が `null`です。| +|正の整数

- または -

1|最初の文字列は、並べ替え順序が 2 番目の文字列の後に続きます。

- または -

第 2 文字列は `null` です。| > [!IMPORTANT] > メソッドは、主に文字列の並べ替えに使用するものです。 等価性をテストする (つまり、ある文字列が別の文字列より大きいか小さいかを問題にせずに戻り値 0 を明示的に検索する) 目的では、 メソッドを使用しないでください。 2 つの文字列が等価かどうかを判断するには、 メソッドを使用してください。 @@ -68,7 +71,7 @@ ms.lasthandoff: 11/21/2017 この例は、コンソールに `-1` と出力します。 - 既定では、上の例はカルチャによって異なります。 カルチャを認識しない文字列比較を実行するには、オーバー ロードを使用して、メソッドを指定して使用するカルチャを指定することができます、*カルチャ*パラメーター。 使用する方法を示す例については、 、カルチャに依存しない比較を実行する方法を確認する[カルチャを認識しない文字列比較の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md)です。 + 既定では、上の例はカルチャによって異なります。 カルチャに依存せずに文字列を比較するには、 メソッドのオーバーロードを利用します。このメソッドでは、*culture* パラメーターを指定することで、使用するカルチャを指定できます。 メソッドを使用してカルチャに依存しない比較を実行する例については、「[カルチャを認識しない文字列比較の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md)」を参照してください。 ## CompareOrdinal メソッドは、ローカル カルチャを考慮せずに 2 つの文字列オブジェクトを比較します。 このメソッドの戻り値は、上の表で示した **Compare** メソッドによって返される値と同じです。 @@ -98,7 +101,7 @@ ms.lasthandoff: 11/21/2017 この例は、コンソールに `-1` と出力します。 - すべてのオーバー ロード、メソッドは、既定ではカルチャおよび大文字小文字を区別の比較を実行します。 このメソッドのオーバーロードで、カルチャに依存しない比較を実行できるものはありません。 コードをわかりやすく、ことをお勧めを使用すること、 **String.Compare**メソッドを指定する代わりに、カルチャに依存する操作のまたはのカルチャに依存しない操作します。 **String.Compare** メソッドを使用してカルチャに依存する比較とカルチャに依存しない比較の両方を実行する例については、「 [カルチャを認識しない文字列比較の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md)」を参照してください。 + メソッドのすべてのオーバーロードは、既定で、カルチャに依存して大文字小文字を区別する比較を実行します。 このメソッドのオーバーロードで、カルチャに依存しない比較を実行できるものはありません。 コードを理解しやすくするために、**String.Compare** メソッドを使用することをお勧めします。その際、カルチャに依存する操作には を指定し、カルチャに依存しない操作には を指定します。 **String.Compare** メソッドを使用してカルチャに依存する比較とカルチャに依存しない比較の両方を実行する例については、「 [カルチャを認識しない文字列比較の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md)」を参照してください。 ## 次の値に等しい **String.Equals** メソッドを使用すると、2 つの文字列が等しいかどうかを簡単に確認できます。 このメソッドは大文字と小文字を区別し、 **True** または **False** の Boolean 値を返します。 このメソッドは、次の例に示すように、既存のクラスで使用できます。 **Equals** メソッドを使用して、文字列オブジェクトに "Hello World" という語句が含まれているかどうかを確認する例を次に示します。 @@ -157,6 +160,6 @@ ms.lasthandoff: 11/21/2017 いずれのメソッドも、 **String.Remove** メソッドと組み合わせて使用すると便利です。 **IndexOf** メソッドまたは **LastIndexOf** メソッドのいずれかを使用して文字の位置を取得し、その位置を **Remove** メソッドに渡すことによって、その文字またはその文字で始まる単語を削除できます。 -## 関連項目 +## 参照 [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) [カルチャを認識しない文字列操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md) diff --git a/docs/standard/base-types/composite-formatting.md b/docs/standard/base-types/composite-formatting.md index 921ba7a628c..33bccc1171b 100644 --- a/docs/standard/base-types/composite-formatting.md +++ b/docs/standard/base-types/composite-formatting.md @@ -19,15 +19,18 @@ helpviewer_keywords: - composite formatting - objects [.NET Framework], formatting multiple objects ms.assetid: 87b7d528-73f6-43c6-b71a-f23043039a49 -caps.latest.revision: "36" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 1f4b311d6e933f6c653fd7ab189c2e644021970d -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: dae73a7ace3aac4e7d89ccba186fceacfe9898ae +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 複合書式指定 .NET Framework の複合書式指定機能は、オブジェクトのリストおよび複合書式指定文字列を入力として使用します。 複合書式指定文字列は、固定テキストに、書式指定項目と呼ばれるインデックス化されたプレースホルダーが混合されて構成されます。このプレースホルダーはリスト内のオブジェクトに対応します。 書式設定操作によって生成される結果の文字列は、元の固定テキストに文字列で表されたリスト内のオブジェクトが混合されて構成されます。 @@ -87,11 +90,11 @@ ms.lasthandoff: 11/21/2017 [!code-vb[Formatting.Composite#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Composite/vb/alignment1.vb#8)] ### Format String コンポーネント - オプションの *formatString* コンポーネントは、書式設定されるオブジェクトの種類に適した書式指定文字列です。 標準またはカスタム数値書式指定文字列の対応するオブジェクトが、数値の場合、標準またはカスタムの日付と時刻書式設定文字列場合は、対応するオブジェクトを指定して、オブジェクト、または[列挙型書式指定文字列](../../../docs/standard/base-types/enumeration-format-strings.md)、対応するオブジェクトが列挙値の場合。 *formatString* が指定されない場合は、数値、日付と時刻、または列挙型の汎用 ("G") 書式指定子が使用されます。 *formatString* を指定する場合はコロンが必要です。 + オプションの *formatString* コンポーネントは、書式設定されるオブジェクトの種類に適した書式指定文字列です。 対応するオブジェクトが数値の場合は標準またはカスタムの数値書式指定文字列を指定し、対応するオブジェクトが オブジェクトの場合は標準またはカスタムの日時書式指定文字列を指定し、対応するオブジェクトが列挙値の場合は[列挙型書式指定文字列](../../../docs/standard/base-types/enumeration-format-strings.md)を指定します。 *formatString* が指定されない場合は、数値、日付と時刻、または列挙型の汎用 ("G") 書式指定子が使用されます。 *formatString* を指定する場合はコロンが必要です。 次の表は、定義済みの一連の書式指定文字列をサポートする .NET Framework クラス ライブラリ内の型または型のカテゴリの一覧です。サポートされている書式指定文字列が示されているトピックへのリンクも含まれています。 文字列の書式設定とは拡張可能な機構で、既存のすべての型に対する新しい書式指定文字列を定義できるだけでなく、アプリケーション定義の型でサポートされる一連の書式指定文字列も定義できます。 詳しくは、 および のインターフェイスに関するトピックを参照してください。 -|型または型のカテゴリ|参照トピック| +|型または型のカテゴリ|解決方法については、| |---------------------------|---------| |日付と時刻の型 ()|[Standard Date and Time Format Strings](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)

[Custom Date and Time Format Strings](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)| |列挙型 ( から派生したすべての型)|[Enumeration Format Strings](../../../docs/standard/base-types/enumeration-format-strings.md)| @@ -126,7 +129,7 @@ ms.lasthandoff: 11/21/2017 1. 書式設定する値が `null` の場合は、空の文字列 ("") が返されます。 -2. 実装が利用できる場合、ランタイムはその メソッドを呼び出します。 書式項目のメソッドに渡します*formatString*値のいずれかが存在する場合または`null`がない場合は、と共に、実装します。 +2. 実装が利用できる場合、ランタイムはその メソッドを呼び出します。 メソッドには書式指定項目の *formatString* 値 (ある場合) または `null` (ない場合) と、 実装が渡されます。 3. 値が インターフェイスを実装している場合は、インターフェイスの メソッドが呼び出されます。 メソッドは、*formatString* 値 (書式指定項目内に値がある場合) または `null` (ない場合) を受け取ります。 引数は、次のように判断されます。 @@ -163,7 +166,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Formatting.Composite#6](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Composite/cs/Composite1.cs#6)] [!code-vb[Formatting.Composite#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Composite/vb/Composite1.vb#6)] -## 関連項目 +## 参照 [型の書式設定](../../../docs/standard/base-types/formatting-types.md) diff --git a/docs/standard/base-types/conversion-tables.md b/docs/standard/base-types/conversion-tables.md index 1850777c525..89e92a29b0e 100644 --- a/docs/standard/base-types/conversion-tables.md +++ b/docs/standard/base-types/conversion-tables.md @@ -18,21 +18,24 @@ helpviewer_keywords: - tables [.NET Framework], type conversions - data types [.NET Framework], converting ms.assetid: 0ea65c59-85eb-4a52-94ca-c36d3bd13058 -caps.latest.revision: "11" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 327469f9a151b6ef7e1c42f6669c0a9dae7016fd -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: e741de47fec5f0ed607bba33b963d449c5c51cce +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # .NET の型変換の表 拡大変換は、1 つの型の値が、サイズが同じかそれ以上の別の型に変換されるときに発生します。 縮小変換は、1 つの型の値が、サイズがより小さい別の型の値に変換されるときに発生します。 このトピックの表は、両方の種類の変換の動作を示しています。 ## 拡大変換 - 次の表では、情報を失うことがなく実行できる拡大変換について説明します。 + 次の表は、情報を失うことなく実行できる拡大変換を示しています。 |型|データ損失なしに次の型に変換可能| |----------|-------------------------------------------| @@ -47,7 +50,7 @@ ms.lasthandoff: 11/21/2017 ||| ||| - 一部の拡大を変換または精度の損失が発生することができます。 次の表は、情報が失われる可能性のある拡大変換を示しています。 + 一部の または への拡大変換では、精度が損なわれる可能性があります。 次の表は、情報が失われる可能性のある拡大変換を示しています。 |型|次の型に変換可能| |----------|-------------------------| @@ -58,11 +61,11 @@ ms.lasthandoff: 11/21/2017 ||, | ## 縮小変換 - 縮小変換または情報の損失が発生することができます。 ターゲット型がソースの大きさを正確に表現できない場合、結果の型は定数 `PositiveInfinity` または `NegativeInfinity` に設定されます。 `PositiveInfinity`正の数を 0 で除算した結果のときにも返されますの値、またはの値を超える、`MaxValue`フィールドです。 `NegativeInfinity`負の数を 0 で除算した結果のときにも返されますの値、またはの値を下回る、`MinValue`フィールドです。 変換、されてしまう`PositiveInfinity`または`NegativeInfinity`です。 + または への縮小変換では、情報が失われる可能性があります。 ターゲット型がソースの大きさを正確に表現できない場合、結果の型は定数 `PositiveInfinity` または `NegativeInfinity` に設定されます。 `PositiveInfinity` は、正の数を 0 で除算した結果であり、 または の値が `MaxValue` フィールドの値を超える場合にも返されます。 `NegativeInfinity` は、負の数を 0 で除算した結果であり、 または の値が `MinValue` フィールドの値を下回る場合にも返されます。 から への変換は、`PositiveInfinity` または `NegativeInfinity` になる場合があります。 - その他のデータ型についても、縮小変換によって情報が失われる可能性があります。 ただし、変換される型の値が、ターゲット型の指定した範囲外である場合にスローされる`MaxValue`と`MinValue`フィールド、および変換がチェックされている場合、ランタイムに、ターゲットの値を確認してください型を超えないその`MaxValue`または`MinValue`です。 実行される変換、クラスは常にこの方法で確認します。 + その他のデータ型についても、縮小変換によって情報が失われる可能性があります。 ただし、変換される型の値が、ターゲット型の `MaxValue` フィールドと `MinValue` フィールドで指定された範囲外にある場合は、 がスローされます。また、ターゲット型の値がその `MaxValue` または `MinValue` を超えないことを確認するために、ランタイムによって変換がチェックされます。 クラスを使用して実行される変換は、常にこの方法でチェックされます。 - 次の表に、スローする変換、を使用してチェックしたすべての変換結果の型の定義された範囲内の変換対象の型の値がある場合またはします。 + 次の表は、 を使用して をスローする変換、または、変換される型の値が結果の型の定義済みの範囲外にあるかどうかのチェックを行うすべての変換を示しています。 |型|次の型に変換可能| |----------|-------------------------| @@ -78,6 +81,6 @@ ms.lasthandoff: 11/21/2017 ||, , , , , , , | ||, , , , , , , | -## 関連項目 +## 参照 [.NET での型変換](../../../docs/standard/base-types/type-conversion.md) diff --git a/docs/standard/base-types/creating-new.md b/docs/standard/base-types/creating-new.md index ef98274838d..3cedaab20ba 100644 --- a/docs/standard/base-types/creating-new.md +++ b/docs/standard/base-types/creating-new.md @@ -1,5 +1,5 @@ --- -title: ".NET での新しい文字列を作成します。" +title: ".NET で新しい文字列を作成する" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -19,29 +19,32 @@ helpviewer_keywords: - strings [.NET Framework], creating - Insert method ms.assetid: 06fdf123-2fac-4459-8904-eb48ab908a30 -caps.latest.revision: "11" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: d000cd88fc9ee9fd48ef25e9bb4982688564a2a0 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3ba91b42bc9815b1b12fdc761882741b11790060 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- -# .NET での新しい文字列を作成します。 -[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)]により、単純な代入を使用して作成される文字列とも異なるパラメーターの番号を使用して文字列の作成をサポートするクラスのコンス トラクター オーバー ロードします。 [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)]もいくつかのメソッドを提供、新しい文字列を作成するクラスがいくつかの文字列、文字列の配列を組み合わせることによってオブジェクトまたはオブジェクトします。 +# .NET で新しい文字列を作成する +[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] は、単純な割り当てを使用した文字列の作成をサポートしています。また、多数の異なるパラメーターを使用した文字列の作成をサポートするために、クラス コンストラクターをオーバーロードします。 また、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] は、複数の文字列、文字列の配列、またはオブジェクトを組み合わせて新しい文字列オブジェクトを作成する、 クラスの複数のメソッドを提供します。 ## 割り当てを使用した文字列の作成 - 新しいを作成する最も簡単な方法オブジェクトを単に文字列リテラルを代入するオブジェクト。 + 新しい オブジェクトを作成する最も簡単な方法としては、単に文字列リテラルを オブジェクトに割り当てます。 ## クラス コンストラクターを使用した文字列の作成 - オーバー ロードを使用することができます、クラス コンス トラクターを文字配列から文字列を作成します。 また、指定した回数だけ特定の文字を複製することで、新しい文字列を作成することもできます。 + クラス コンストラクターのオーバーロードを使用すると、文字配列から文字列を作成できます。 また、指定した回数だけ特定の文字を複製することで、新しい文字列を作成することもできます。 ## 文字列を返すメソッド 次の表は、新しい文字列オブジェクトを返すいくつかの便利なメソッドを示しています。 -|メソッド名|用途| +|メソッド名|使用| |-----------------|---------| ||入力オブジェクトのセットから、書式設定された文字列をビルドします。| ||2 つ以上の文字列から文字列をビルドします。| @@ -50,23 +53,23 @@ ms.lasthandoff: 11/21/2017 ||文字配列内の指定の位置に、文字列内の指定の文字をコピーします。| ### 形式 - 使用することができます、 **String.Format**複数のオブジェクトを表す文字列を書式設定された文字列を作成し、連結します。 このメソッドは、渡されたすべてのオブジェクトを文字列に自動的に変換します。 たとえば、アプリケーションを表示する必要があります、 **Int32**値と**DateTime**値、ユーザーを使用してこれらの値を表す文字列を簡単に作成できる、**形式**メソッドです。 このメソッドで使用される書式設定規則については、[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)に関するセクションを参照してください。 + **String.Format** メソッドを使用すると、書式設定された文字列を作成し、複数のオブジェクトを表す文字列を連結できます。 このメソッドは、渡されたすべてのオブジェクトを文字列に自動的に変換します。 たとえば、アプリケーションでユーザーに対して **Int32** 値と **DateTime** 値を表示する必要がある場合、**Format** メソッドを使用して、これらの値を表す文字列を簡単に作成できます。 このメソッドで使用される書式設定規則については、[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)に関するセクションを参照してください。 - 次の例では、**形式**整数変数を使用する文字列を作成します。 + 次の例では、**Format** メソッドを使用して、整数型の変数を使用する文字列を作成します。 [!code-csharp[Strings.Creating#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.Creating/cs/Example.cs#1)] [!code-vb[Strings.Creating#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.Creating/vb/Example.vb#1)] - この例では現在のスレッドに関連付けられているカルチャで指定された方法で現在の日付と時刻を表示します。 + この例では、 は、現在のスレッドに関連付けられているカルチャで指定された方法で現在の日時を表示します。 ### Concat - **String.Concat**を簡単に 2 つ以上の既存のオブジェクトから、新しい文字列オブジェクトを作成するメソッドを使用できます。 言語に依存せずに文字列を連結する方法を提供します。 このメソッドから派生した任意のクラスを受け入れる**System.Object**です。 次の例では、2 つの既存の文字列オブジェクトおよび区切り文字から文字列を作成します。 + **String.Concat** メソッドを使用すると、2 つ以上の既存のオブジェクトから新しい文字列オブジェクトを簡単に作成できます。 言語に依存せずに文字列を連結する方法を提供します。 このメソッドは、**System.Object** から派生したすべてのクラスを受け入れます。 次の例では、2 つの既存の文字列オブジェクトおよび区切り文字から文字列を作成します。 [!code-csharp[Strings.Creating#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.Creating/cs/Example.cs#2)] [!code-vb[Strings.Creating#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.Creating/vb/Example.vb#2)] ### Join - **先**メソッドは、文字列と区切り記号文字列の配列から新しい文字列を作成します。 このメソッドは、複数の文字列を連結して、たとえばコンマで区切られたリストを作成する場合に便利です。 + **String.Join** メソッドは、文字列の配列および区切り文字列から新しい文字列を作成します。 このメソッドは、複数の文字列を連結して、たとえばコンマで区切られたリストを作成する場合に便利です。 次の例では、スペースを使用して文字列の配列をバインドします。 @@ -74,19 +77,19 @@ ms.lasthandoff: 11/21/2017 [!code-vb[Strings.Creating#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.Creating/vb/Example.vb#3)] ### 挿入 - **String.Insert**メソッドは、文字列を別の文字列内の指定位置に挿入すると、新しい文字列を作成します。 このメソッドは、0 から始まるインデックスを使用します。 次の例では、`MyString` の 5 番目のインデックス位置に文字列を挿入し、この値を持つ新しい文字列を作成します。 + **String.Insert** メソッドは、別の文字列内の指定の位置に文字列を挿入することで、新しい文字列を作成します。 このメソッドは、0 から始まるインデックスを使用します。 次の例では、`MyString` の 5 番目のインデックス位置に文字列を挿入し、この値を持つ新しい文字列を作成します。 [!code-csharp[Strings.Creating#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.Creating/cs/Example.cs#4)] [!code-vb[Strings.Creating#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.Creating/vb/Example.vb#4)] ### CopyTo - **String.CopyTo**メソッドは、文字列の一部分を文字の配列にコピーします。 文字列の開始インデックスと、コピーする文字数の両方を指定できます。 このメソッドは、ソース インデックス、文字配列、コピー先のインデックス、およびコピーする文字数を受け取ります。 すべてのインデックスは 0 から始まります。 + **String.CopyTo** メソッドは、文字配列に文字列の部分をコピーします。 文字列の開始インデックスと、コピーする文字数の両方を指定できます。 このメソッドは、ソース インデックス、文字配列、コピー先のインデックス、およびコピーする文字数を受け取ります。 すべてのインデックスは 0 から始まります。 - 次の例では、 **CopyTo**にオブジェクトの文字列「こんにちは」という語の文字を文字の配列の最初のインデックス位置にコピーする方法です。 + 次の例では、**CopyTo** メソッドを使用して、文字列オブジェクトから文字配列の最初のインデックス位置に、単語 "Hello" の文字をコピーします。 [!code-csharp[Strings.Creating#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.Creating/cs/Example.cs#5)] [!code-vb[Strings.Creating#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.Creating/vb/Example.vb#5)] -## 関連項目 +## 参照 [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) [複合書式指定](../../../docs/standard/base-types/composite-formatting.md) diff --git a/docs/standard/base-types/custom-date-and-time-format-strings.md b/docs/standard/base-types/custom-date-and-time-format-strings.md index f32eb2d8784..9375775678e 100644 --- a/docs/standard/base-types/custom-date-and-time-format-strings.md +++ b/docs/standard/base-types/custom-date-and-time-format-strings.md @@ -20,15 +20,18 @@ helpviewer_keywords: - formatting [.NET Framework], time - date and time strings ms.assetid: 98b374e3-0cc2-4c78-ab44-efb671d71984 -caps.latest.revision: "79" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: f0346de00988a6863c212a95be3ffa9d356fe5ce -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 503f9d593235cc81c6e2ecf43b93abb2105e0adf +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # カスタム日時書式指定文字列 日時書式指定文字列は、 値または 値の書式設定操作によって生成されるテキスト表現を定義します。 また、文字列を日時に正常に変換するために解析操作で必要となる日時値の表現も定義します。 カスタム書式指定文字列は、1 つ以上のカスタム日時書式指定子で構成されます。 [標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)以外の文字列は、すべてカスタム日時書式指定文字列として解釈されます。 @@ -50,7 +53,7 @@ ms.lasthandoff: 11/21/2017 次の表に、カスタム日時書式指定子の説明および書式指定子ごとの書式設定後の文字列を示します。 既定では、結果の文字列は、en-US カルチャの書式指定規則を反映します。 特定の書式指定子でローカライズされた文字列が書式設定後に生成される場合、例には書式設定後の文字列が適用されるカルチャも示されます。 カスタム日時書式指定文字列の使用方法については、「メモ」を参照してください。 -|書式指定子|説明|例| +|書式指定子|説明|使用例| |----------------------|-----------------|--------------| |"d"|月の日にち (1 ~ 31)。

詳細については、「["d" カスタム書式指定子](#dSpecifier)」を参照してください。|2009-06-01T13:45:30 -> 1

2009-06-15T13:45:30 -> 15| |"dd"|月の日にち (01 ~ 31)。

詳細については、「["dd" カスタム書式指定子](#ddSpecifier)」を参照してください。|2009-06-01T13:45:30 -> 01

2009-06-15T13:45:30 -> 15| @@ -358,7 +361,7 @@ ms.lasthandoff: 11/21/2017 - タイム ゾーンが指定されていない時刻の場合 ( プロパティ = )、 と同じ結果になります。 - "K"書式指定子の値は、"zzz"書式指定子に相当し、結果を含む文字列を生成する、 UTC からのオフセットの値。 + "K" 書式指定子を 値で使用した場合、この指定子は "zzz" 書式指定子に相当し、書式設定後の文字列には 値の UTC を基準としたオフセットが含まれます。 "K" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"K" は標準の日時書式指定子として解釈され、 をスローします。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 @@ -661,7 +664,7 @@ ms.lasthandoff: 11/21/2017 [!code-vb[Formatting.DateAndTime.Custom#22](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/LiteralsEx3.vb#22)] -## ノート +## メモ ### 単一のカスタム書式指定子の使用 @@ -691,14 +694,14 @@ ms.lasthandoff: 11/21/2017 ### コントロール パネルの設定 コントロール パネルの **[地域と言語のオプション]** の設定は、各種のカスタム日時書式指定子を使った書式設定操作によって生成される結果の文字列に影響します。 これらの設定は、書式設定の制御に使用される値を提供する現在のスレッド カルチャに関連付けられた オブジェクトを初期化するために使用されます。 コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。 - また、使用する場合、新しいのインスタンスを作成するコンス トラクターを現在のシステム カルチャによって確立された任意のカスタマイズと同じカルチャを表すオブジェクト、**地域と言語のオプション**コントロール パネル では、新しいに適用されるオブジェクト。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 + また、 コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい オブジェクトをインスタンス化した場合、コントロール パネルの **[地域と言語のオプション]** 項目で設定されたカスタマイズが新しい オブジェクトに適用されます。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 ### DateTimeFormatInfo のプロパティ 書式設定は、現在の オブジェクトのプロパティの影響を受けます。このオブジェクトは、現在のスレッド カルチャによって暗黙的に指定されるか、または書式設定を実行するメソッドの パラメーターによって明示的に指定されます。 パラメーターには、カルチャを表す オブジェクト、または オブジェクトを指定します。 各種のカスタム日時書式指定子によって生成される書式設定後の文字列も、現在の オブジェクトのプロパティに依存します。 カスタム日時書式指定子によって生成される結果は、対応する プロパティを変更することによって変えることができます。 たとえば、"ddd" 書式指定子を使用した場合、書式設定後の文字列には、 文字列配列に指定されている曜日の省略名が追加されます。 同様に、"MMMM" 書式指定子を使用した場合、書式設定後の文字列には、 文字列配列に指定されている月の正式名が追加されます。 -## 関連項目 +## 参照 [型の書式設定](../../../docs/standard/base-types/formatting-types.md) diff --git a/docs/standard/base-types/custom-numeric-format-strings.md b/docs/standard/base-types/custom-numeric-format-strings.md index baaed4c1c66..431f958a764 100644 --- a/docs/standard/base-types/custom-numeric-format-strings.md +++ b/docs/standard/base-types/custom-numeric-format-strings.md @@ -22,27 +22,30 @@ helpviewer_keywords: - formatting numbers [.NET Framework] - format specifiers, custom numeric format strings ms.assetid: 6f74fd32-6c6b-48ed-8241-3c2b86dea5f4 -caps.latest.revision: "54" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: a391ee54aaeaf007afcb6aacdb9376820950e89e -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: ec33a093e4f7f8ccda1992f26563bcd63853e634 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # カスタム数値書式指定文字列 1 つ以上のカスタム数値指定子で構成されるカスタム数値書式指定文字列を作成して、数値データの書式設定方法を定義できます。 カスタム数値書式指定文字列は、 [標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md)ではない任意の書式指定文字列です。 - カスタム数値書式指定文字列は、すべての数値型の `ToString` メソッドの一部のオーバーロードでサポートされています。 たとえば、 型の メソッドおよび メソッドに数値書式指定文字列を指定できます。 カスタム数値書式指定文字列もサポートしています、.NET[複合書式指定機能](../../../docs/standard/base-types/composite-formatting.md)、いくつかによって使用される`Write`と`WriteLine`のメソッド、クラス、 メソッド、およびメソッドです。 + カスタム数値書式指定文字列は、すべての数値型の `ToString` メソッドの一部のオーバーロードでサポートされています。 たとえば、 型の メソッドおよび メソッドに数値書式指定文字列を指定できます。 カスタム数値書式指定文字列は、.NET の[複合書式指定機能](../../../docs/standard/base-types/composite-formatting.md)でもサポートされています。この機能を使用するメソッドには、 クラスおよび クラスの一部の `Write` メソッドと `WriteLine` メソッド、 メソッド、 メソッドがあります。 > [!TIP] > [書式指定ユーティリティ](http://code.msdn.microsoft.com/NET-Framework-4-Formatting-9c4dae8d)をダウンロードできます。このアプリケーションを使用すると、書式指定文字列を数値または日付と時刻の値に適用して、結果の文字列を表示できます。 次の表に、カスタム数値書式指定子の説明および書式指定子ごとのサンプル出力を示します。 カスタム数値書式指定文字列の使用方法については、「 [メモ](#NotesCustomFormatting) 」を参照してください。それらを使用する包括的な例については、「 [例](#example) 」を参照してください。 -|書式指定子|名前|説明|例| +|書式指定子|name|説明|使用例| |----------------------|----------|-----------------|--------------| |"0"|ゼロ プレースホルダー|対応する数字でゼロを置き換えます。置き換えが行われるのは、対応する数字が存在する場合です。それ以外の場合は、結果の文字列にはゼロが表示されます。

詳細については、「 ["0" カスタム指定子](#Specifier0)」を参照してください。|1234.5678 ("00000") -> 01235

0.45678 ("0.00", en-US) -> 0.46

0.45678 ("0.00", fr-FR) -> 0,46| |"#"|桁プレースホルダー|対応する数字で "#" 記号を置き換えます。置き換えが行われるのは、対応する数字が存在する場合です。それ以外の場合は、結果の文字列に数字は表示されません。

入力文字列の対応する数字が意味を持たない 0 の場合、結果の文字列に数字は表示されません。 たとえば、0003 ("####") -> 3 です。

詳細については、「 ["#" カスタム指定子](#SpecifierD)」を参照してください。|1234.5678 ("#####") -> 1235

0.45678 ("#.##", en-US) -> .46

0.45678 ("#.##", fr-FR) -> ,46| @@ -51,7 +54,7 @@ ms.lasthandoff: 11/21/2017 |"%"|パーセント プレースホルダー|数値に 100 を乗算し、結果の文字列に、ローカライズされたパーセント記号を挿入します。

詳細については、「 ["%" カスタム指定子](#SpecifierPct)」を参照してください。|0.3697 ("%#0.00", en-US) -> %36.97

0.3697 ("%#0.00", el-GR) -> %36,97

0.3697 ("##.0 %", en-US) -> 37.0 %

0.3697 ("##.0 %", el-GR) -> 37,0 %| |"‰"|パーミル プレースホルダー|数値に 1000 を乗算し、結果の文字列にローカライズされたパーミル記号を挿入します。

詳細については、「 ["‰" カスタム指定子](#SpecifierPerMille)」を参照してください。|0.03697 ("#0.00‰", en-US) -> 36.97‰

0.03697 ("#0.00‰", ru-RU) -> 36,97‰| |"E0"

"E+0"

"E-0"

"E0"

"E+0"

"E-0"|指数表記|後に 0 (ゼロ) が 1 つ以上続く場合に、指数表記を使用して結果の書式を設定します。 大文字 "E" と小文字 "e" は、結果の文字列の指数記号を大文字にするか小文字にするかを示します。 "E" 文字または "e" 文字の後に続くゼロの数によって、指数部の最小桁数が決まります。 正符号 (+) は、符号文字が指数部の前に常に挿入されることを示します。 負符号 (-) は、指数部が負の値の場合にだけその前に符号文字が挿入されることを示します。

詳細については、「 ["E" カスタム指定子と "e" カスタム指定子](#SpecifierExponent)」を参照してください。|987654 ("#0.0e0") -> 98.8e4

1503.92311 ("0.0##e+00") -> 1.504e+03

1.8901385E-16 ("0.0e+00") -> 1.9e-16| -|"\\"|エスケープ文字|この文字の次の文字はカスタム書式指定子ではなくリテラルとして解釈されます。

詳細については: [、"\\"エスケープ文字](#SpecifierEscape)です。|987654 ("\\###00\\#") -> #987654#| +|"\\"|エスケープ文字|この文字の次の文字はカスタム書式指定子ではなくリテラルとして解釈されます。

詳細については、「["\\" エスケープ文字](#SpecifierEscape)」を参照してください。|987654 ("\\###00\\#") -> #987654#| |'*文字列*'

"*文字列*"|リテラル文字列区切り記号|囲まれた文字列が結果の文字列にそのままコピーされることを示します。|68 ("#' degrees'") -> 68 degrees

68 ("#' degrees'") -> 68 degrees| |;|セクション区切り記号|正の数値、負の数値、およびゼロの数値に対して、別々の書式指定文字列を使用してセクションを定義します。

詳細については、「 [";" セクション区切り記号](#SectionSeparator)」を参照してください。|12.345 ("#0.0#;(#0.0#);-\0-") -> 12.35

0 ("#0.0#;(#0.0#);-\0-") -> -0-

-12.345 ("#0.0#;(#0.0#);-\0-") -> (12.35)

12.345 ("#0.0#;(#0.0#)") -> 12.35

0 ("#0.0#;(#0.0#)") -> 0.0

-12.345 ("#0.0#;(#0.0#)") -> (12.35)| |その他|上記以外のすべての文字|文字が結果の文字列にそのままコピーされます。|68 ("# °") -> 68 °| @@ -171,7 +174,7 @@ ms.lasthandoff: 11/21/2017 [表のトップへ](#table) -## "\\"エスケープ文字 +## "\\" エスケープ文字 書式指定文字列内の "#"、"0"、"."、","、"%"、"‰" の各記号は、リテラル文字ではなく書式指定子として解釈されます。 カスタム書式指定文字列内での位置によっては、大文字および小文字の "E"、および + 記号と - 記号も書式指定子として解釈されます。 文字が書式指定子として解釈されないようにするには、その文字の前に、エスケープ文字の円記号を付けます。 エスケープ文字は、その後に続く文字が、そのまま結果の文字列に含める必要がある文字リテラルであることを示します。 @@ -181,7 +184,7 @@ ms.lasthandoff: 11/21/2017 > [!NOTE] > C++ コンパイラや C# コンパイラなど、一部のコンパイラでは、同様に、1 つの円記号がエスケープ文字として解釈されることがあります。 書式設定時に文字列が正しく解釈されるようにするには、C# では、逐語的文字列リテラル文字 (@ 文字) を文字列の前に使用します。また、C# および C++ では、円記号の前にもう 1 つ円記号を付ける方法もあります。 両方の方法を次の C# の例に示します。 - 次の例は、書式設定操作「#」、「0」を解釈するを防ぐためにエスケープ文字を使用し、"\\"文字をエスケープ文字または書式指定子のいずれか。 この C# の例では、円記号をもう 1 つ付けて、円記号がリテラル文字として解釈されるようにしています。 + 次の例では、エスケープ文字を使用して、書式設定操作で "#"、"0"、"\\" の各文字がエスケープ文字としても書式指定子としても解釈されないようにします。 この C# の例では、円記号をもう 1 つ付けて、円記号がリテラル文字として解釈されるようにしています。 [!code-cpp[Formatting.Numeric.Custom#11](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/escape1.cpp#11)] [!code-csharp[Formatting.Numeric.Custom#11](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/escape1.cs#11)] @@ -218,7 +221,7 @@ ms.lasthandoff: 11/21/2017 ### コントロール パネルの設定 コントロール パネルの **[地域と言語のオプション]** での設定は、書式設定操作によって生成される結果の文字列に影響します。 これらの設定は、現在のスレッド カルチャに関連付けられた オブジェクトを初期化するために使用され、現在のスレッド カルチャから書式設定の制御に使用される値が提供されます。 コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。 - また、使用する場合、新しいのインスタンスを作成するコンス トラクターを現在のシステム カルチャによって確立された任意のカスタマイズと同じカルチャを表すオブジェクト、**地域と言語のオプション**コントロール パネル では、新しいに適用されるオブジェクト。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 + また、 コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい オブジェクトをインスタンス化した場合、コントロール パネルの **[地域と言語のオプション]** 項目で設定されたカスタマイズが新しい オブジェクトに適用されます。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 ### 丸めと固定小数点の書式指定文字列 固定小数点の書式指定文字列 (つまり指数表記の書式指定文字を含まない書式指定文字列) の場合は、小数点以下の桁数が小数点の右側にある桁プレースホルダーの数と同じである数値に丸められます。 書式指定文字列に小数点が含まれていない場合には、最も近い整数に丸められます。 数値の桁数が、整数部の桁プレースホルダーの数よりも大きい場合には、桁プレースホルダーに収まらない桁が、結果の文字列の 1 番目の桁プレースホルダーの直前にコピーされます。 @@ -235,7 +238,7 @@ ms.lasthandoff: 11/21/2017 [表のトップへ](#table) -## 関連項目 +## 参照 [型の書式設定](../../../docs/standard/base-types/formatting-types.md) [Standard Numeric Format Strings](../../../docs/standard/base-types/standard-numeric-format-strings.md) diff --git a/docs/standard/base-types/custom-timespan-format-strings.md b/docs/standard/base-types/custom-timespan-format-strings.md index 24fb050e23c..a53aa390c4e 100644 --- a/docs/standard/base-types/custom-timespan-format-strings.md +++ b/docs/standard/base-types/custom-timespan-format-strings.md @@ -19,18 +19,21 @@ helpviewer_keywords: - formatting [.NET Framework], time - custom TimeSpan format strings ms.assetid: a63ebf55-7269-416b-b4f5-286f6c03bf0e -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 7302b17beb5ce20ec2bd8865149fe2e0bae9cee4 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f86aeab5a024c463dbfbf0a0d0ff198cef80f7ac +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # カスタム TimeSpan 書式指定文字列 - 書式指定文字列は、書式設定操作によって生成される 値の文字列形式を定義します。 カスタム書式指定文字列は、1 つ以上のカスタム 書式指定子と任意の数のリテラル文字で構成されます。 任意の文字列ではない、[標準 TimeSpan 書式指定文字列](../../../docs/standard/base-types/standard-timespan-format-strings.md)カスタムとして解釈されます書式指定文字列。 + 書式指定文字列は、書式設定操作によって生成される 値の文字列形式を定義します。 カスタム書式指定文字列は、1 つ以上のカスタム 書式指定子と任意の数のリテラル文字で構成されます。 [標準の時間間隔書式指定文字列](../../../docs/standard/base-types/standard-timespan-format-strings.md)以外の文字列は、すべてカスタム 書式指定文字列として解釈されます。 > [!IMPORTANT] > カスタム 書式指定子には、日と時間、時間と分、または秒と秒の小数部を区切る記号などのプレースホルダー区切り記号は含まれません。 これらの記号は、カスタム書式指定文字列にリテラル文字列として含まれている必要があります。 たとえば、`"dd\.hh\:mm"` は、ピリオド (.) を日と時間の間の区切り記号として定義し、コロンを時間と分の間の区切り記号として定義します。 @@ -47,12 +50,12 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.TimeSpan.Custom#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customparseexample1.cs#2)] [!code-vb[Conceptual.TimeSpan.Custom#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customparseexample1.vb#2)] -次の表は、カスタム日時書式指定子について説明します。 + カスタム日時書式指定子を次の表に示します。 |書式指定子|説明|例| |----------------------|-----------------|-------------| |"d" または "%d"|時間間隔の日数。

詳細については、「["d" カスタム書式指定子](#dSpecifier)」を参照してください。|`new TimeSpan(6, 14, 32, 17, 685):`

`%d` --> "6"

`d\.hh\:mm` --> "6.14:32"| -|"dd" ~ "dddddddd"|必要に応じて先行ゼロで埋められた、時間間隔の日数。

詳細については: ["dd"-"dddddddd"カスタム書式指定子](#ddSpecifier)です。|`new TimeSpan(6, 14, 32, 17, 685):`

`ddd` --> "006"

`dd\.hh\:mm` --> "06.14:32"| +|"dd" ~ "dddddddd"|必要に応じて先行ゼロで埋められた、時間間隔の日数。

詳細については、「["dd" ~ "dddddddd" カスタム書式指定子](#ddSpecifier)」を参照してください。|`new TimeSpan(6, 14, 32, 17, 685):`

`ddd` --> "006"

`dd\.hh\:mm` --> "06.14:32"| |"h" または "%h"|日数の一部としてカウントされない、時間間隔の時間数。 1 桁の時間に先行ゼロは付きません。

詳細については、「["h" カスタム書式指定子](#hSpecifier)」を参照してください。|`new TimeSpan(6, 14, 32, 17, 685):`

`%h` --> "14"

`hh\:mm` --> "14:32"| |"hh"|日数の一部としてカウントされない、時間間隔の時間数。 1 桁の時間には、先頭に 0 が付けられます。

詳細については、「["hh" カスタム書式指定子](#hhSpecifier)」を参照してください。|`new TimeSpan(6, 14, 32, 17, 685):`

`hh` --> "14"

`new TimeSpan(6, 8, 32, 17, 685):`

`hh` --> 08| |"m" または "%m"|時間数および日数のいずれの一部としても含まれない、時間間隔の分数。 1 桁の分に先行ゼロは付きません。

詳細については、「["m" カスタム書式指定子](#mSpecifier)」を参照してください。|`new TimeSpan(6, 14, 8, 17, 685):`

`%m` --> "8"

`h\:m` --> "14:8"| @@ -60,7 +63,7 @@ ms.lasthandoff: 11/21/2017 |"s" または "%s"|時間数、日数、および分数のいずれの一部としても含まれない、時間間隔の秒数。 1 桁の秒に先行ゼロは付きません。

詳細については、「["s" カスタム書式指定子](#sSpecifier)」を参照してください。|`TimeSpan.FromSeconds(12.965)`:

`%s` --> 12

`s\.fff` --> 12.965| |"ss"|時間数、日数、および分数のいずれの一部としても含まれない、時間間隔の秒数。 1 桁の秒には、先頭に 0 が付きます。

詳細については、「["ss" カスタム書式指定子](#ssSpecifier)」を参照してください。|`TimeSpan.FromSeconds(6.965)`:

`ss` --> 06

`ss\.fff` --> 06.965| |"f" または "%f"|時間間隔の秒部分の 1/10。

詳細については、「["f" カスタム書式指定子](#fSpecifier)」を参照してください。|`TimeSpan.FromSeconds(6.895)`:

`f` --> 8

`ss\.f` --> 06.8| -|"ff"|時間間隔の秒部分の 1/100。

詳細については:["ff"カスタム書式指定子](#ffSpecifier)です。|`TimeSpan.FromSeconds(6.895)`:

`ff` --> 89

`ss\.ff` --> 06.89| +|"ff"|時間間隔の秒部分の 1/100。

詳細については、「["ff" カスタム書式指定子](#ffSpecifier)」を参照してください。|`TimeSpan.FromSeconds(6.895)`:

`ff` --> 89

`ss\.ff` --> 06.89| |"fff"|時間間隔の秒部分の 1/1000。

詳細については、「["fff" カスタム書式指定子](#f3Specifier)」を参照してください。|`TimeSpan.FromSeconds(6.895)`:

`fff` --> 895

`ss\.fff` --> 06.895| |"ffff"|時間間隔の秒部分の 1/10000。

詳細については、「["ffff" カスタム書式指定子](#f4Specifier)」を参照してください。|`TimeSpan.Parse("0:0:6.8954321")`:

`ffff` --> 8954

`ss\.ffff` --> 06.8954| |"fffff"|時間間隔の秒部分の 1/100000。

詳細については、「["fffff" カスタム書式指定子](#f5Specifier)」を参照してください。|`TimeSpan.Parse("0:0:6.8954321")`:

`fffff` --> 89543

`ss\.fffff` --> 06.89543| @@ -73,9 +76,9 @@ ms.lasthandoff: 11/21/2017 |"FFFFF"|時間間隔の秒部分の 1/100000。 小数の後続のゼロは含まれません。

詳細については、「["FFFFF" カスタム書式指定子](#F5_Specifier)」を参照してください。|`TimeSpan.Parse("00:00:06.329179")`:

`FFFFF`: 32917

`TimeSpan.Parse("0:0:3.100009")`:

`ss\.FFFFF`: 03.1| |"FFFFFF"|時間間隔の秒部分の 1/1000000。 小数の後続のゼロは表示されません。

詳細については、「["FFFFFF" カスタム書式指定子](#F6_Specifier)」を参照してください。|`TimeSpan.Parse("00:00:06.3291791")`:

`FFFFFF`: 329179

`TimeSpan.Parse("0:0:3.1000009")`:

`ss\.FFFFFF`: 03.1| |"FFFFFFF"|時間間隔の秒部分の 1/10000000。 小数の後続のゼロは表示されません。また、7 桁のゼロも表示されません。

詳細については、「["FFFFFFF" カスタム書式指定子](#F7_Specifier)」を参照してください。|`TimeSpan.Parse("00:00:06.3291791")`:

`FFFFFF`: 3291791

`TimeSpan.Parse("0:0:3.1900000")`:

`ss\.FFFFFF`: 03.19| -|*' 文字列*'|リテラル文字列の区切り記号。

詳細については:[その他の文字](#Other)です。|`new TimeSpan(14, 32, 17):`

`hh':'mm':'ss` --> "14:32:17"| -|\|エスケープ文字。

詳細については:[その他の文字](#Other)です。|`new TimeSpan(14, 32, 17):`

`hh\:mm\:ss` --> "14:32:17"| -|その他の文字|エスケープされないその他の文字はすべて、カスタム書式指定子として解釈されます。

詳細情報:[他の文字](#Other)です。|`new TimeSpan(14, 32, 17):`

`hh\:mm\:ss` --> "14:32:17"| +|*'string*'|リテラル文字列の区切り記号。

詳細については、「[その他の文字](#Other)」を参照してください。|`new TimeSpan(14, 32, 17):`

`hh':'mm':'ss` --> "14:32:17"| +|\|エスケープ文字。

詳細については、「[その他の文字](#Other)」を参照してください。|`new TimeSpan(14, 32, 17):`

`hh\:mm\:ss` --> "14:32:17"| +|その他の文字|エスケープされないその他の文字はすべて、カスタム書式指定子として解釈されます。

詳細については、「[その他の文字](#Other)」を参照してください。|`new TimeSpan(14, 32, 17):`

`hh\:mm\:ss` --> "14:32:17"| ## "d" カスタム書式指定子 @@ -145,7 +148,7 @@ ms.lasthandoff: 11/21/2017 ## "m" カスタム書式指定子 - "m" カスタム書式指定子は、日の部分の一部としてカウントされない、時間間隔の分数を表す プロパティの値を出力します。 1 桁の文字列値を返す場合の値、プロパティは 0 ~ 9、および 2 桁の文字列値を返す場合の値、プロパティの範囲は 10 ~ 59 です。 + "m" カスタム書式指定子は、日の部分の一部としてカウントされない、時間間隔の分数を表す プロパティの値を出力します。 プロパティの値が 0 ~ 9 の場合は 1 桁の文字列値を返し、 プロパティの値が 10 ~ 59 の場合は 2 桁の文字列値を返します。 "m" カスタム書式指定子が単独で使用される場合は、誤って標準書式指定文字列として解釈されないように "%m" を指定します。 具体的な例を次に示します。 @@ -182,7 +185,7 @@ ms.lasthandoff: 11/21/2017 ## "s" カスタム書式指定子 - "s" カスタム書式指定子は、時間、日、および分の部分のいずれの一部としても含まれない、時間間隔の秒数を表す プロパティの値を出力します。 1 桁の文字列値を返す場合の値、プロパティは 0 ~ 9、および 2 桁の文字列値を返す場合の値、プロパティの範囲は 10 ~ 59 です。 + "s" カスタム書式指定子は、時間、日、および分の部分のいずれの一部としても含まれない、時間間隔の秒数を表す プロパティの値を出力します。 プロパティの値が 0 ~ 9 の場合は 1 桁の文字列値を返し、 プロパティの値が 10 ~ 59 の場合は 2 桁の文字列値を返します。 "s" カスタム書式指定子が単独で使用される場合は、誤って標準書式指定文字列として解釈されないように "%s" を指定します。 具体的な例を次に示します。 @@ -383,7 +386,7 @@ ms.lasthandoff: 11/21/2017 - 単一引用符 (リテラル文字列の区切り記号) で囲みます。 -- 円記号を付けます ("\\")、エスケープ文字として解釈されます。 このため、C# では、書式指定文字列に @-quoted、またはリテラル文字の前に追加の円記号が指定されている必要があります。 +- エスケープ文字として解釈される円記号 ("\\") を前に付けます。 このため、C# では、書式指定文字列に @-quoted、またはリテラル文字の前に追加の円記号が指定されている必要があります。 条件ロジックを使用してエスケープされたリテラルを書式指定文字列に含めることが必要になる場合もあります。 次の例では、条件ロジックを使用して負の時間間隔の符号を含めます。 @@ -399,6 +402,6 @@ ms.lasthandoff: 11/21/2017 [表のトップへ](#table) -## 関連項目 +## 参照 [型の書式設定](../../../docs/standard/base-types/formatting-types.md) [標準の時間間隔書式指定文字列](../../../docs/standard/base-types/standard-timespan-format-strings.md) diff --git a/docs/standard/base-types/details-of-regular-expression-behavior.md b/docs/standard/base-types/details-of-regular-expression-behavior.md index e2a08dbda0b..f6caf771db9 100644 --- a/docs/standard/base-types/details-of-regular-expression-behavior.md +++ b/docs/standard/base-types/details-of-regular-expression-behavior.md @@ -15,42 +15,45 @@ helpviewer_keywords: - regular expressions, behavior - .NET Framework regular expressions, behavior ms.assetid: 0ee1a6b8-caac-41d2-917f-d35570021b10 -caps.latest.revision: "27" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: ac5ddfb0ac7ae83537717e9bd0cd46eb629641fe -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c574ab8ddf506802fb42f53b5212dcb4a3bd9d34 +ms.sourcegitcommit: cf22b29db780e532e1090c6e755aa52d28273fa6 ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 02/01/2018 --- # 正規表現の動作の詳細 -.NET Framework 正規表現エンジンは、バックトラッ キング正規表現マッチャー Perl、Python、Emacs、Tcl によって使用されているなどの従来の非決定的有限オートマトン (NFA) エンジンが組み込まれています。 このエンジンは、awk、egrep、または lex に見られるような、より高速であるが制限が多い、純粋な正規表現決定性有限オートマトン (DFA) エンジンとは異なります。 また、標準化されているが低速な POSIX NFA とも異なります。 次のセクションでは、正規表現エンジンは、の 3 つの種類について説明し、従来 NFA エンジンを使用して、.NET Framework の正規表現を実装する理由を説明します。 +.NET Framework の正規表現エンジンはバックトラッキング型の正規表現マッチャーであり、Perl、Python、Emacs、および Tcl で使われているのと同じ従来型の非決定性有限オートマトン (NFA) エンジンを採用しています。 このエンジンは、awk、egrep、または lex に見られるような、より高速であるが制限が多い、純粋な正規表現決定性有限オートマトン (DFA) エンジンとは異なります。 また、標準化されているが低速な POSIX NFA とも異なります。 次のセクションでは、これら 3 種類の正規表現エンジンについて説明し、.NET Framework の正規表現が従来型 NFA エンジンを使って実装されている理由について説明します。 ## NFA エンジンの利点 DFA エンジンがパターン一致を実行する場合、その処理順序は入力文字列によって決定されます。 このエンジンは入力文字列の先頭で開始し、順番に進んで、次の文字が正規表現パターンと一致するかどうかを判断します。 このエンジンでは、想定され得る最長の文字列を確実に検索できます。 同じ文字が 2 回テストされることはないため、DFA エンジンはバックトラッキングをサポートしません。 ただし、DFA エンジンには有限状態しか含まれないため、前方参照を使用してパターンを検索することはできません。また、明示的な展開が作成されないため、部分式をキャプチャできません。 - DFA エンジンとは異なり、従来型 NFA エンジンがパターン一致を実行する場合、その処理順序は正規表現パターンによって決定されます。 特定の言語要素を処理するときに、エンジンは最長一致を使用します。つまり、できるだけ多くの入力文字列と一致するようにします。 しかし、部分式の一致が見つかった後の状態も保存します。 最終的に一致が見つからなかった場合、エンジンは保存した状態に戻ることができるため、さらに照合を試行できます。 この正規表現内のそれ以降の言語要素が一致もできるように、部分式が成功した一致を放棄のプロセスと呼ばれる*バックトラッ キング*です。 NFA エンジンは、バックトラッキングを使用して、ある正規表現で可能なすべての展開を特定の順序でテストし、最初に一致した文字列を採用します。 従来型 NFA エンジンでは、見つかった一致文字列の正規表現に固有の展開が作成されるため、部分式に一致する文字列と、一致する前方参照をキャプチャできます。 しかし、従来型 NFA ではバックトラックが行われるため、1 つの状態に到達する経路が複数ある場合には、同じ状態に何度も到達する可能性があります。 その結果、最悪の場合には指数関数的に実行速度が遅くなることがあります。 従来型 NFA エンジンでは、最初に見つかった一致文字列が採用されるため、その他の (おそらく、より長い) 一致文字列が見つからないままになる場合もあります。 + DFA エンジンとは異なり、従来型 NFA エンジンがパターン一致を実行する場合、その処理順序は正規表現パターンによって決定されます。 特定の言語要素を処理するときに、エンジンは最長一致を使用します。つまり、できるだけ多くの入力文字列と一致するようにします。 しかし、部分式の一致が見つかった後の状態も保存します。 最終的に一致が見つからなかった場合、エンジンは保存した状態に戻ることができるため、さらに照合を試行できます。 正規表現の後の言語要素も照合できるようにするために、この見つかった部分式の一致を破棄するプロセスを "*バックトラッキング*" と呼びます。 NFA エンジンは、バックトラッキングを使用して、ある正規表現で可能なすべての展開を特定の順序でテストし、最初に一致した文字列を採用します。 従来型 NFA エンジンでは、見つかった一致文字列の正規表現に固有の展開が作成されるため、部分式に一致する文字列と、一致する前方参照をキャプチャできます。 しかし、従来型 NFA ではバックトラックが行われるため、1 つの状態に到達する経路が複数ある場合には、同じ状態に何度も到達する可能性があります。 その結果、最悪の場合には指数関数的に実行速度が遅くなることがあります。 従来型 NFA エンジンでは、最初に見つかった一致文字列が採用されるため、その他の (おそらく、より長い) 一致文字列が見つからないままになる場合もあります。 POSIX NFA エンジンは従来型 NFA エンジンと似ていますが、一致する最長の文字列が確実に見つかるまでバックトラックが継続される点が異なります。 その結果、POSIX NFA エンジンは従来型 NFA エンジンよりも実行速度が遅くなります。また、POSIX NFA エンジンを使用する場合は、バックトラッキング検索の順序を変更して、より短い一致文字列を長い一致文字列よりも優先させることはできません。 従来型 NFA エンジンは、DFA エンジンや POSIX NFA エンジンよりも文字列の一致をより厳密に制御するため、プログラマに人気があります。 NFA エンジンは、最悪の場合には実行速度が遅くなることもありますが、あいまいさを少なくし、バックトラッキングを制限するパターンを使用すると、一致する文字列を線形時間または多項式時間で見つけるように調整できます。 言い換えると、NFA エンジンはパフォーマンスと引き換えに能力と柔軟性を向上させますが、ほとんどの場合、正規表現が適切に記述されていれば十分に許容できるパフォーマンスを実現でき、バックトラッキングによってパフォーマンスが指数関数的に低下する状況は回避されます。 > [!NOTE] -> パフォーマンスが低下し、過度なバックトラッ キング正規表現を作成する方法でそれらを回避する方法については、次を参照してください。[バックトラッ キング](../../../docs/standard/base-types/backtracking-in-regular-expressions.md)です。 +> 過度なバックトラッキングによって発生するパフォーマンスの低下と、そのような問題を回避する正規表現の作成方法については、「[バックトラッキング](../../../docs/standard/base-types/backtracking-in-regular-expressions.md)」をご覧ください。 ## .NET Framework エンジンの機能 - NFA エンジンを従来の利点を利用するには、.NET Framework 正規表現エンジンには、プログラマ、バックトラッ キングのエンジン調整を有効にする構成要素の完全なセットが含まれています。 それらの構成体を使用すると、高速検索を実行したり、他の展開よりも特定の展開を優先させたりできます。 + 従来型の NFA エンジンの長所を利用するために、.NET Framework の正規表現エンジンには、プログラマがバックトラッキング エンジンを調整できるようにするための構成体セットが組み込まれています。 それらの構成体を使用すると、高速検索を実行したり、他の展開よりも特定の展開を優先させたりできます。 - .NET Framework の正規表現エンジンの他の機能を以下に示します。 + .NET Framework の正規表現エンジンのその他の機能は次のとおりです。 -- 限定的な量指定子: `??`、 `*?`、 `+?`、 `{` *n* `,` *m*`}?`です。 これらの構成体は、バックトラッキング エンジンに対し、繰り返しの回数が最も少ない文字列を最初に検索するように指示します。 逆に、通常の最長一致の量指定子は、繰り返しの回数が最も多い文字列を最初に検索しようとします。 2 つの量指定子の動作の違いを次の例に示します。 正規表現は、数字で終わる文を照合し、キャプチャ グループはその数字を抽出します。 正規表現 `.+(\d+)\.` には最長一致の量指定子 `.+` が含まれます。これにより、正規表現エンジンは数字の最後の桁のみをキャプチャします。 対照的に、正規表現 `.+?(\d+)\.` には最短一致の量指定子 `.+?` が含まれます。これにより、正規表現エンジンは数字全体をキャプチャします。 +- 最短一致の量指定子: `??`、`*?`、`+?`、`{`*n*`,`*m*`}?`。 これらの構成体は、バックトラッキング エンジンに対し、繰り返しの回数が最も少ない文字列を最初に検索するように指示します。 逆に、通常の最長一致の量指定子は、繰り返しの回数が最も多い文字列を最初に検索しようとします。 2 つの量指定子の動作の違いを次の例に示します。 正規表現は、数字で終わる文を照合し、キャプチャ グループはその数字を抽出します。 正規表現 `.+(\d+)\.` には最長一致の量指定子 `.+` が含まれます。これにより、正規表現エンジンは数字の最後の桁のみをキャプチャします。 対照的に、正規表現 `.+?(\d+)\.` には最短一致の量指定子 `.+?` が含まれます。これにより、正規表現エンジンは数字全体をキャプチャします。 [!code-csharp[Conceptual.RegularExpressions.Design#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/lazy1.cs#1)] [!code-vb[Conceptual.RegularExpressions.Design#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/lazy1.vb#1)] - この正規表現の最長一致と最短のバージョンは次の表に示すように定義されています '。 + この正規表現の最長一致バージョンと最短一致バージョンは、次の表に示すように定義されています。 |パターン|説明| |-------------|-----------------| @@ -59,9 +62,9 @@ ms.lasthandoff: 10/18/2017 |`(\d+)`|1 文字以上の数字と一致し、その文字を最初のキャプチャ グループに代入します。| |`\.`|ピリオドと一致します。| - 限定的な量指定子の詳細については、次を参照してください。[量指定子](../../../docs/standard/base-types/quantifiers-in-regular-expressions.md)です。 + 最短一致の量指定子について詳しくは、「[限定子](../../../docs/standard/base-types/quantifiers-in-regular-expressions.md)」をご覧ください。 -- 肯定先読み: `(?=` *subexpression*`)`です。 この機能により、バックトラッキング エンジンは部分式と一致する文字列を見つけた後で、テキスト内の同じ位置に戻ることができます。 同じ位置から開始する複数のパターンを確認してテキスト全体を検索する場合に便利です。 また、エンジンは、一致するテキストに部分文字列を含めずに、一致文字列の末尾に部分文字列が存在することを検証できます。 次の例では、肯定先読みを使用して、後に区切り記号が続かない文中の単語を抽出します。 +- 肯定先読み: `(?=`*subexpression*`)`。 この機能により、バックトラッキング エンジンは部分式と一致する文字列を見つけた後で、テキスト内の同じ位置に戻ることができます。 同じ位置から開始する複数のパターンを確認してテキスト全体を検索する場合に便利です。 また、エンジンは、一致するテキストに部分文字列を含めずに、一致文字列の末尾に部分文字列が存在することを検証できます。 次の例では、肯定先読みを使用して、後に区切り記号が続かない文中の単語を抽出します。 [!code-csharp[Conceptual.RegularExpressions.Design#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/lookahead1.cs#2)] [!code-vb[Conceptual.RegularExpressions.Design#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/lookahead1.vb#2)] @@ -71,13 +74,13 @@ ms.lasthandoff: 10/18/2017 |パターン|説明| |-------------|-----------------| |`\b`|ワード境界から照合を開始します。| - |`[A-Z]+`|任意の英字と 1 回以上、一致します。 メソッドが呼び出された、オプション、比較では区別されません。| + |`[A-Z]+`|任意の英字と 1 回以上、一致します。 メソッドが オプションを使って呼び出されているため、比較では大文字と小文字が区別されません。| |`\b`|ワード境界で照合を終了します。| |`(?=\P{P})`|先読みして次の文字が区切り記号かどうかを判定します。 区切り記号でない場合は、一致と見なされます。| - 肯定先読みアサーションの詳細については、次を参照してください。[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)です。 + 肯定先読みアサーションについて詳しくは、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」をご覧ください。 -- 負の先読み: `(?!` *subexpression*`)`です。 この機能により、部分式に一致する文字列が見つからなかった場合にのみ、表現に一致できるようになります。 ある文字列を除外する表現の方が、含める表現よりも単純になることが多いため、この機能は検索を簡略化する場合に特に力を発揮します。 たとえば、"non" で始まらない単語を表す表現を記述するのは簡単ではありません。 次の例では、否定先読みを使用してこれらを除外します。 +- 否定先読み: `(?!`*subexpression*`)`。 この機能により、部分式に一致する文字列が見つからなかった場合にのみ、表現に一致できるようになります。 ある文字列を除外する表現の方が、含める表現よりも単純になることが多いため、この機能は検索を簡略化する場合に特に力を発揮します。 たとえば、"non" で始まらない単語を表す表現を記述するのは簡単ではありません。 次の例では、否定先読みを使用してこれらを除外します。 [!code-csharp[Conceptual.RegularExpressions.Design#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/lookahead2.cs#3)] [!code-vb[Conceptual.RegularExpressions.Design#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/lookahead2.vb#3)] @@ -91,9 +94,9 @@ ms.lasthandoff: 10/18/2017 |`(\w+)`|1 つ以上の単語文字に一致します。| |`\b`|ワード境界で照合を終了します。| - 否定先読みアサーションの詳細については、次を参照してください。[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)です。 + 否定先読みアサーションについて詳しくは、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」をご覧ください。 -- 条件の評価: `(?(`*式*`)`*はい*`|`*ありません*`)`と`(?(` *名前*`)`*はい*`|`*ありません*`)`ここで、*式*部分式は、一致させるのには、*名前*、キャプチャ グループの名前を指定*はい*場合に一致する文字列を指定*式*が一致または*名前*が有効で空のキャプチャ グループ、および*ありません*場合に一致する部分式は、*式*が一致しませんまたは*名前*空でない有効なキャプチャ グループではありません。 この機能により、エンジンは直前の部分式の一致結果またはゼロ幅アサーションの結果に従って、複数の代替パターンを使用した検索を実行できます。 そのため、より強力な前方参照が可能になります。たとえば、直前の部分式が一致したかどうかに基づいて部分式を照合できます。 次の例の正規表現は、パブリック使用と内部使用の両方を目的とした段落と一致します。 内部使用のみを目的とした段落は `` タグで始まります。 正規表現パターン `^(?\\s)?(?(Pvt)((\w+\p{P}?\s)+)|((\w+\p{P}?\s)+))\r?$` は、条件付き評価を使用して、パブリック使用と内部使用を目的とした段落の内容を別のキャプチャ グループに代入します。 これらの段落は、異なる方法で処理できます。 +- 条件付き評価: `(?(`*expression*`)`*yes*`|`*no*`)` および`(?(`*name*`)`*yes*`|`*no*`)`。ここで、*expression* は照合する部分式、*name* はキャプチャ グループの名前、*yes* は、*expression* が一致するか、または *name* が空でない有効なキャプチャ グループである場合に照合する文字列、*no* は、*expression* が一致しないか、または *name* が空でない有効なキャプチャ グループではない場合に照合する部分式です。 この機能により、エンジンは直前の部分式の一致結果またはゼロ幅アサーションの結果に従って、複数の代替パターンを使用した検索を実行できます。 そのため、より強力な前方参照が可能になります。たとえば、直前の部分式が一致したかどうかに基づいて部分式を照合できます。 次の例の正規表現は、パブリック使用と内部使用の両方を目的とした段落と一致します。 内部使用のみを目的とした段落は `` タグで始まります。 正規表現パターン `^(?\\s)?(?(Pvt)((\w+\p{P}?\s)+)|((\w+\p{P}?\s)+))\r?$` は、条件付き評価を使用して、パブリック使用と内部使用を目的とした段落の内容を別のキャプチャ グループに代入します。 これらの段落は、異なる方法で処理できます。 [!code-csharp[Conceptual.RegularExpressions.Design#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/conditional1.cs#4)] [!code-vb[Conceptual.RegularExpressions.Design#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/conditional1.vb#4)] @@ -103,16 +106,16 @@ ms.lasthandoff: 10/18/2017 |パターン|説明| |-------------|-----------------| |`^`|行の先頭から照合を開始します。| - |`(?\\s)?`|文字列 `` の後に空白文字が続くパターンの 0 回または 1 回の出現と一致します。 名前付きキャプチャ グループに、一致を割り当てる`Pvt`です。| + |`(?\\s)?`|文字列 `` の後に空白文字が続くパターンの 0 回または 1 回の出現と一致します。 一致文字列を `Pvt` という名前のキャプチャ グループに代入します。| |`(?(Pvt)((\w+\p{P}?\s)+)`|`Pvt` キャプチャ グループが存在する場合は、1 個以上の単語文字の後に 0 個または 1 個の区切り記号と 1 つの空白文字が続くパターンの 1 回以上の出現と一致します。 部分文字列を最初のキャプチャ グループに代入します。| |`|((\w+\p{P}?\s)+))`|`Pvt` キャプチャ グループが存在しない場合は、1 個以上の単語文字の後に 0 個または 1 個の区切り記号と 1 つの空白文字が続くパターンの 1 回以上の出現と一致します。 部分文字列を 3 番目のキャプチャ グループに代入します。| |`\r?$`|行末または文字列の末尾と一致します。| - 条件の評価の詳細については、次を参照してください。[代替構成体](../../../docs/standard/base-types/alternation-constructs-in-regular-expressions.md)です。 + 条件付き評価について詳しくは、「[代替構成体](../../../docs/standard/base-types/alternation-constructs-in-regular-expressions.md)」をご覧ください。 -- グループ定義の均等: `(?<` *name1*`-`*name2* `>` *subexpression*`)`です。 この機能により、正規表現エンジンは、かっこや左右の角かっこなどの入れ子になった構成体を追跡できます。 例については、次を参照してください。[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)です。 +- グループ定義の均等化: `(?<`*name1*`-`*name2*`>` *subexpression*`)`。 この機能により、正規表現エンジンは、かっこや左右の角かっこなどの入れ子になった構成体を追跡できます。 例については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」をご覧ください。 -- 非バックトラッ キング部分式 (最長一致部分式とも呼ばれます): `(?>` *subexpression*`)`です。 この機能により、バックトラッキング エンジンは、部分式と最初に一致した文字列だけを確実に検索できるようになります。この場合、表現は、部分式を含む表現とは関係ないように処理されます。 この構成体を使用しない場合は、より大きな表現によるバックトラッキング検索時に、部分式の動作が変化する可能性があります。 たとえば、正規表現 `(a+)\w` は 1 つ以上の "a" 文字を、一連の "a" 文字に続く単語文字と共に照合し、一連の "a" 文字を最初のキャプチャ グループに代入します。ただし、入力文字列の最後の文字も "a" の場合は、`\w` 言語要素によって照合され、キャプチャ グループには含められません。 +- 非バックトラッキング部分式 (別名: 最長一致部分式): `(?>`*subexpression*`)`。 この機能により、バックトラッキング エンジンは、部分式と最初に一致した文字列だけを確実に検索できるようになります。この場合、表現は、部分式を含む表現とは関係ないように処理されます。 この構成体を使用しない場合は、より大きな表現によるバックトラッキング検索時に、部分式の動作が変化する可能性があります。 たとえば、正規表現 `(a+)\w` は 1 つ以上の "a" 文字を、一連の "a" 文字に続く単語文字と共に照合し、一連の "a" 文字を最初のキャプチャ グループに代入します。ただし、入力文字列の最後の文字も "a" の場合は、`\w` 言語要素によって照合され、キャプチャ グループには含められません。 [!code-csharp[Conceptual.RegularExpressions.Design#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/nonbacktracking2.cs#7)] [!code-vb[Conceptual.RegularExpressions.Design#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/nonbacktracking2.vb#7)] @@ -122,16 +125,16 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Conceptual.RegularExpressions.Design#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/nonbacktracking1.cs#8)] [!code-vb[Conceptual.RegularExpressions.Design#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/nonbacktracking1.vb#8)] - 非バックトラッ キング部分式の詳細については、次を参照してください。[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)です。 + 非バックトラッキング部分式について詳しくは、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」をご覧ください。 -- 右から左一致する、指定することによって指定されている、オプションをクラスのコンス トラクターまたは静的なインスタンスの一致するメソッド。 この機能は、左から右ではなく右から左に向かって検索する場合や、パターンの左側ではなく右側で検索を開始した方が効果的な場合に便利です。 次の例に示すように、右から左への一致を使用すると、最長一致の量指定子の動作を変更できます。 この例では、数字で終わる文に対して 2 つの検索を実行します。 最長一致の量指定子 `+` を使用する左から右への検索では、文中の 6 桁の数字の 1 つと一致しますが、右から左への検索では 6 桁の数字すべてと一致します。 正規表現パターンの説明については、このセクションで前に示した最短一致の量指定子の例を参照してください。 +- 右から左への一致。 クラス コンストラクターまたは静的インスタンス一致メソッドに オプションを設定すると指定されます。 この機能は、左から右ではなく右から左に向かって検索する場合や、パターンの左側ではなく右側で検索を開始した方が効果的な場合に便利です。 次の例に示すように、右から左への一致を使用すると、最長一致の量指定子の動作を変更できます。 この例では、数字で終わる文に対して 2 つの検索を実行します。 最長一致の量指定子 `+` を使用する左から右への検索では、文中の 6 桁の数字の 1 つと一致しますが、右から左への検索では 6 桁の数字すべてと一致します。 正規表現パターンの説明については、このセクションで前に示した最短一致の量指定子の例を参照してください。 [!code-csharp[Conceptual.RegularExpressions.Design#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/rtl1.cs#6)] [!code-vb[Conceptual.RegularExpressions.Design#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/rtl1.vb#6)] 右から左への一致の詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」をご覧ください。 -- 正と負の後読み: `(?<=` *subexpression* `)`の正の後読みと`(?関連トピック -|タイトル|説明| +|Title|説明| |-----------|-----------------| |[バックトラッキング](../../../docs/standard/base-types/backtracking-in-regular-expressions.md)|正規表現のバックトラッキングを使用して、分岐処理によって別の一致を検索する方法について説明します。| |[コンパイルと再利用](../../../docs/standard/base-types/compilation-and-reuse-in-regular-expressions.md)|パフォーマンスを向上させるための正規表現のコンパイルと再利用について説明します。| diff --git a/docs/standard/base-types/enumeration-format-strings.md b/docs/standard/base-types/enumeration-format-strings.md index 790cda02e52..8bb63d539b8 100644 --- a/docs/standard/base-types/enumeration-format-strings.md +++ b/docs/standard/base-types/enumeration-format-strings.md @@ -16,18 +16,21 @@ helpviewer_keywords: - enumeration format strings - formatting [.NET Framework], enumeration ms.assetid: dd1ff672-1052-42cf-8666-4924fb6cd1a1 -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: e0992d8591711073f9094c29fad980a8e652e686 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 58004fa19f2ec3b1ca7570d6ca75702510148002 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 列挙型書式指定文字列 -使用することができます、数値、16 進数、または列挙体のメンバーの文字列値を表す新しい文字列オブジェクトを作成します。 このメソッドは、列挙型書式指定文字列のいずれかを使って、返される値を指定します。 + メソッドを使用すると、列挙型メンバーの数値、16 進数、または文字列値を表す新しい文字列オブジェクトを作成できます。 このメソッドは、列挙型書式指定文字列のいずれかを使って、返される値を指定します。 次の表では、列挙型書式指定文字列とそれが返す値を一覧表示します。 これらの書式指定子では大文字と小文字は区別されません。 @@ -54,5 +57,5 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Formatting.Enum#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Enum/cs/enum1.cs#7)] [!code-vb[Formatting.Enum#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Enum/vb/enum1.vb#7)] -## 関連項目 +## 参照 [型の書式設定](../../../docs/standard/base-types/formatting-types.md) diff --git a/docs/standard/base-types/formatting-types.md b/docs/standard/base-types/formatting-types.md index f0224049ac8..deb1cc9b782 100644 --- a/docs/standard/base-types/formatting-types.md +++ b/docs/standard/base-types/formatting-types.md @@ -1,5 +1,5 @@ --- -title: ".Net 型の書式設定" +title: ".NET での型の書式設定" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -31,17 +31,20 @@ helpviewer_keywords: - custom formatting [.NET Framework] - strings [.NET Framework], formatting ms.assetid: 0d1364da-5b30-4d42-8e6b-03378343343f -caps.latest.revision: "43" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 816337ead810be405339a0616798a06689b97315 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 201212251bf99e5a5bab7685544079968bbebdb1 +ms.sourcegitcommit: 6a9030eb5bd0f00e1d144f81958adb195cfb1f6f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/10/2018 --- -# .Net 型の書式設定 +# .NET での型の書式設定 書式設定とはクラス、構造体、または列挙値のインスタンスを文字列形式に変換するプロセスのことで、多くの場合、変換した文字列をユーザーに表示したり、逆シリアル化して元のデータ型を復元したりするために行います。 この変換には次のような問題がある場合があります。 - 値の内部での格納方法に、ユーザーが望む表示方法が反映されない場合がある。 たとえば、電話番号が 8009999999 という形式で格納されることがあります。これではユーザーにはわかりにくいため、 代わりに 800-999-9999 と表示する必要があります。 数値をこのように書式指定する例については、「 [カスタム書式指定文字列](#customStrings) 」を参照してください。 @@ -71,7 +74,7 @@ ms.lasthandoff: 10/18/2017 - [カスタム書式指定文字列](#customStrings) - - [.NET クラス ライブラリの型および書式指定文字列](#stringRef) + - [書式指定文字列と .NET クラス ライブラリ型](#stringRef) - [書式プロバイダーと IFormatProvider インターフェイスによるカルチャに依存した書式指定](#FormatProviders) @@ -91,7 +94,7 @@ ms.lasthandoff: 10/18/2017 ## .NET での書式設定 - 書式設定するための基本的なメカニズムは、既定の実装、については、メソッド、 [ToString メソッドを使用して書式設定を既定](#DefaultToString)このトピックで後述する「します。 ただし、.NET には、この既定の書式設定機能を変更および拡張する方法がいくつかあります。 次に例を示します。 + 基本的な書式設定の方式は、 メソッドによって既定として実装されます。このメソッドについては、このトピックの「[ToString メソッドを使用した既定の書式設定](#DefaultToString) 」のセクションを参照してください。 ただし、.NET には、この既定の書式設定機能を変更および拡張する方法がいくつかあります。 次に例を示します。 - メソッドをオーバーライドして、オブジェクトの値のカスタム文字列形式を定義する方法。 詳細については、このトピックの「 [ToString メソッドのオーバーライド](#OverrideToString) 」のセクションを参照してください。 @@ -121,7 +124,7 @@ ms.lasthandoff: 10/18/2017 ## ToString メソッドを使用した既定の書式設定 - から派生したすべての型は、既定で型の名前を返す、パラメーターなしの `ToString` メソッドを自動的に継承します。 既定の `ToString` メソッドの例を次に示します。 このコード例では、実装を持たない `Automobile` という名前のクラスを定義します。 このクラスがインスタンス化され、 `ToString` メソッドが呼び出されると、その型の名前が表示されます。 サンプルでは、 `ToString` メソッドが明示的に呼び出されないことに注意してください。 メソッドは引数として渡されたオブジェクトの `ToString` メソッドを暗黙的に呼び出します。 + から派生したすべての型は、既定で型の名前を返す、パラメーターなしの `ToString` メソッドを自動的に継承します。 既定の `ToString` メソッドの例を次に示します。 このコード例では、実装を持たない `Automobile` という名前のクラスを定義します。 このクラスがインスタンス化され、 `ToString` メソッドが呼び出されると、その型の名前が表示されます。 サンプルでは、`ToString` メソッドが明示的に呼び出されないことに注意してください。 メソッドは引数として渡されたオブジェクトの `ToString` メソッドを暗黙的に呼び出します。 [!code-csharp[Conceptual.Formatting.Overview#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/default1.cs#1)] [!code-vb[Conceptual.Formatting.Overview#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/default1.vb#1)] @@ -143,7 +146,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Conceptual.Formatting.Overview#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/overrides1.cs#2)] [!code-vb[Conceptual.Formatting.Overview#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/overrides1.vb#2)] - .NET では、`ToString`名前の代わりに、オブジェクトの値を表示するのには、各プリミティブ値型のメソッドをオーバーライドされています。 各プリミティブ型のオーバーライドを次の表に示します。 オーバーライドされているメソッドのほとんどは `ToString` メソッドの別のオーバーロードを呼び出し、それにその型の一般書式を定義する "G" 書式指定子と、現在のカルチャを表す オブジェクトを渡します。 + .NET では、各プリミティブ値型の `ToString` メソッドは、名前の代わりにオブジェクトの値を表示するようにオーバーライドされています。 各プリミティブ型のオーバーライドを次の表に示します。 オーバーライドされているメソッドのほとんどは `ToString` メソッドの別のオーバーロードを呼び出し、それにその型の一般書式を定義する "G" 書式指定子と、現在のカルチャを表す オブジェクトを渡します。 |型|ToString のオーバーライド| |----------|-----------------------| @@ -214,7 +217,7 @@ ms.lasthandoff: 10/18/2017 標準の数値書式指定文字列の詳細については、「 [Standard Numeric Format Strings](../../../docs/standard/base-types/standard-numeric-format-strings.md)」を参照してください。 - 日付と時刻の値の標準書式指定文字列は、特定の プロパティに格納されているカスタム書式指定文字列のエイリアスです。 たとえば、"D" 書式指定子を渡して日付と時刻の値の `ToString` メソッドを呼び出すと、現在のカルチャの プロパティに格納されているカスタム書式指定文字列を使用して日付と時刻が表示されます (カスタム書式指定文字列の詳細については、次を参照してください、[次のセクション](#customStrings)。)。この関係を次の例に示します。 + 日付と時刻の値の標準書式指定文字列は、特定の プロパティに格納されているカスタム書式指定文字列のエイリアスです。 たとえば、"D" 書式指定子を渡して日付と時刻の値の `ToString` メソッドを呼び出すと、現在のカルチャの プロパティに格納されているカスタム書式指定文字列を使用して日付と時刻が表示されます (カスタム書式指定文字列の詳細については、[次のセクション](#customStrings)を参照してください)。この関係を次の例に示します。 [!code-csharp[Conceptual.Formatting.Overview#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/alias1.cs#5)] [!code-vb[Conceptual.Formatting.Overview#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/alias1.vb#5)] @@ -258,17 +261,15 @@ ms.lasthandoff: 10/18/2017 [ページのトップへ](#Introduction) -### .NET クラス ライブラリの型および書式指定文字列 - すべての数値型 (つまり、 型) +### 書式指定文字列と .NET 型 + すべての数値型 (つまり、、および 型)、、すべての列挙型が、書式指定文字列による書式設定に対応しています。 各型でサポートされている特定の書式指定文字列については、次のトピックを参照してください。 - 、 、すべての列挙型が書式指定文字列による書式設定に対応しています。 各型でサポートされている特定の書式指定文字列については、次のトピックを参照してください - -|タイトル|定義| +|Title|定義| |-----------|----------------| |[Standard Numeric Format Strings](../../../docs/standard/base-types/standard-numeric-format-strings.md)|数値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。| |[Custom Numeric Format Strings](../../../docs/standard/base-types/custom-numeric-format-strings.md)|数値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。| -|[Standard Date and Time Format Strings](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)| 値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。| -|[Custom Date and Time Format Strings](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)| 値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。| +|[Standard Date and Time Format Strings](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)| 値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。| +|[Custom Date and Time Format Strings](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)| 値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。| |[標準の時間間隔書式指定文字列](../../../docs/standard/base-types/standard-timespan-format-strings.md)|時間間隔に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。| |[カスタム時間間隔書式指定文字列](../../../docs/standard/base-types/custom-timespan-format-strings.md)|時間間隔に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。| |[Enumeration Format Strings](../../../docs/standard/base-types/enumeration-format-strings.md)|列挙型の文字列形式を作成するために使用される標準書式指定文字列について説明します。| @@ -276,7 +277,7 @@ ms.lasthandoff: 10/18/2017 ## 書式プロバイダーと IFormatProvider インターフェイスによるカルチャに依存した書式指定 - 書式指定子を利用することでオブジェクトの書式をカスタマイズできますが、多くの場合、意味のあるオブジェクトの文字列形式を生成するには追加の書式設定情報が必要です。 たとえば、"C" 標準書式指定文字列または "$ #,#.00" などのカスタム書式指定文字列を使用して数字を通貨値として書式設定する場合、少なくとも、正しい通貨記号、桁区切り記号、および小数点記号についての情報を書式設定された文字列に含めることができる必要があります。 .NET では、この追加の書式設定情報はをとおして利用可能なの 1 つまたは複数のオーバー ロードに対するパラメーターとして提供されているインターフェイス、`ToString`数値型および日付と時刻の型のメソッドです。 実装は、カルチャ固有の書式設定をサポートするために、.NET で使用されます。 それぞれ異なるカルチャを示す 3 つの オブジェクトを使用してオブジェクトの書式を設定した場合に、その文字列形式がどのように変化するかを次の例に示します。 + 書式指定子を利用することでオブジェクトの書式をカスタマイズできますが、多くの場合、意味のあるオブジェクトの文字列形式を生成するには追加の書式設定情報が必要です。 たとえば、"C" 標準書式指定文字列または "$ #,#.00" などのカスタム書式指定文字列を使用して数字を通貨値として書式設定する場合、少なくとも、正しい通貨記号、桁区切り記号、および小数点記号についての情報を書式設定された文字列に含めることができる必要があります。 .NET では、 インターフェイスによって、この追加の書式設定情報を利用できるようにします。このインターフェイスは、数値型および日付/時刻型の `ToString` メソッドの 1 つ以上のオーバーロードに対するパラメーターとして提供されます。 の実装は .NET で使用され、カルチャ固有の書式指定をサポートします。 それぞれ異なるカルチャを示す 3 つの オブジェクトを使用してオブジェクトの書式を設定した場合に、その文字列形式がどのように変化するかを次の例に示します。 [!code-csharp[Conceptual.Formatting.Overview#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/iformatprovider1.cs#11)] [!code-vb[Conceptual.Formatting.Overview#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/iformatprovider1.vb#11)] @@ -297,7 +298,7 @@ ms.lasthandoff: 10/18/2017 > [!NOTE] > 数値型および日付/時刻型の `ToString` メソッドはオーバーロードされますが、 パラメーターが含まれるのはそのうちの一部のオーバーロードだけです。 メソッドに 型のパラメーターがない場合は、代わりに プロパティによって返されるオブジェクトが渡されます。 たとえば、既定の メソッドの呼び出しの場合は、最終的には `Int32.ToString("G", System.Globalization.CultureInfo.CurrentCulture)` のようなメソッド呼び出しになります。 - 実装する次の 3 つのクラスを提供する .NET : + .NET には、 を実装する次の 3 つのクラスが用意されています。 - 。このクラスは、特定のカルチャの日付と時刻の値に対する書式設定情報を提供します。 対応する の実装では、単にそれ自身のインスタンスが返されます。 @@ -360,7 +361,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Conceptual.Formatting.Overview#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/iformattable.cs#12)] [!code-vb[Conceptual.Formatting.Overview#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/iformattable.vb#12)] - 次の例では、 `Temperature` オブジェクトをインスタンス化しています。 その後、 メソッドを呼び出し、いくつかの複合書式指定文字列を使用して `Temperature` オブジェクトのさまざまな文字列形式を取得します。 さらに、それらの各メソッド呼び出しで、 クラスの `Temperature` 実装を呼び出しています。 + 次の例では、`Temperature` オブジェクトをインスタンス化しています。 その後、 メソッドを呼び出し、いくつかの複合書式指定文字列を使用して `Temperature` オブジェクトのさまざまな文字列形式を取得します。 さらに、それらの各メソッド呼び出しで、 クラスの `Temperature` 実装を呼び出しています。 [!code-csharp[Conceptual.Formatting.Overview#13](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/iformattable.cs#13)] [!code-vb[Conceptual.Formatting.Overview#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/iformattable.vb#13)] @@ -376,7 +377,7 @@ ms.lasthandoff: 10/18/2017 書式項目をそれに対応するオブジェクトの文字列形式に置換することに加えて、書式項目は以下を制御することもできます。 -- オブジェクトを文字列として表現する特定の方法 (オブジェクトが インターフェイスを実装し、書式文字列をサポートする場合)。 これは、 `:` (コロン) 付きの書式項目のインデックスに、有効な書式文字列を続けることによります。 前の例では、日付の値を "d" (短い日付のパターン) 書式文字列 ( `{0:d}`など) を書式設定し、数値を "C2" 書式文字列 ( `{2:C2}` など) で書式設定して数値を 2 桁の小数部を含む 10 進数を持つ通貨値で表していました。 +- オブジェクトを文字列として表現する特定の方法 (オブジェクトが インターフェイスを実装し、書式文字列をサポートする場合)。 これは、`:` (コロン) 付きの書式項目のインデックスに、有効な書式文字列を続けることによります。 前の例では、日付の値を "d" (短い日付のパターン) 書式文字列 ( `{0:d}`など) を書式設定し、数値を "C2" 書式文字列 ( `{2:C2}` など) で書式設定して数値を 2 桁の小数部を含む 10 進数を持つ通貨値で表していました。 - オブジェクトの文字列形式を含むフィールドの幅、およびそのフィールドの文字列形式の配置。 これは、 `,` (コンマ) 付きの書式項目のインデックスに、フィールドの幅を続けることによります。 フィールドの幅が正の値の場合、文字列はフィールドで右揃えにし、フィールドの幅が負の値の場合、左揃えにします。 次の例では、20 文字のフィールドで日付の値を左揃えにし、11 文字のフィールドで、1 桁の小数部を含む 10 進数値を右揃えにします。 @@ -400,7 +401,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Conceptual.Formatting.Overview#15](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/icustomformatter1.cs#15)] [!code-vb[Conceptual.Formatting.Overview#15](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/icustomformatter1.vb#15)] - `ByteByByteFormatter` クラスを使用して整数値の書式を設定する例を次に示します。 注意してください、 、2 番目のメソッドが複数回呼び出されるメソッドを呼び出すことと、既定のために、3 番目のメソッド呼び出しで使用されるプロバイダー、します。`ByteByByteFormatter.Format` ) を返すため、3 回目のメソッド呼び出しでは既定の`Nothing` ) に相当する書式指定子。 + `ByteByByteFormatter` クラスを使用して整数値の書式を設定する例を次に示します。 メソッドが 2 回目の メソッド呼び出しで複数回呼び出されることに注意してください。また、既定の プロバイダーは、`ByteByByteFormatter.Format` メソッドが "N0" 書式指定文字列を認識せず、null 参照 (Visual Basic の場合は `Nothing`) を返すため、3 回目のメソッド呼び出しで使用されます。 [!code-csharp[Conceptual.Formatting.Overview#16](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/icustomformatter1.cs#16)] [!code-vb[Conceptual.Formatting.Overview#16](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/icustomformatter1.vb#16)] @@ -410,7 +411,7 @@ ms.lasthandoff: 10/18/2017 ## 関連トピック -|タイトル|定義| +|Title|定義| |-----------|----------------| |[Standard Numeric Format Strings](../../../docs/standard/base-types/standard-numeric-format-strings.md)|数値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。| |[Custom Numeric Format Strings](../../../docs/standard/base-types/custom-numeric-format-strings.md)|数値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。| diff --git a/docs/standard/base-types/grouping-constructs-in-regular-expressions.md b/docs/standard/base-types/grouping-constructs-in-regular-expressions.md index 34424b54805..57eb616d775 100644 --- a/docs/standard/base-types/grouping-constructs-in-regular-expressions.md +++ b/docs/standard/base-types/grouping-constructs-in-regular-expressions.md @@ -19,15 +19,18 @@ helpviewer_keywords: - constructs, grouping - grouping constructs ms.assetid: 0fc18634-f590-4062-8d5c-f0b71abe405b -caps.latest.revision: "33" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 37428cf96bbe36a55e88edeb5ec56e09895be994 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b6e0b9d3482bbfc3dabeee1f6b7fce7a93364dfb +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 正規表現でのグループ化構成体 グループ化構成体は、正規表現の部分式を表し、入力文字列の部分文字列をキャプチャします。 グループ化構成体を使用して、以下を実行できます。 @@ -40,7 +43,7 @@ ms.lasthandoff: 11/21/2017 - プロパティから個々の部分式を取得し、一致したテキスト全体とは別に処理する。 - 次の表は、.NET の正規表現エンジンでサポートされているグループ化構成体の一覧し、キャプチャまたは非キャプチャするかどうかを示します。 + 次の表に、.NET 正規表現エンジンでサポートされているグループ化構成体と、これらの構成体がキャプチャまたは非キャプチャのいずれであるかを示します。 |グループ化構成体|キャプチャまたは非キャプチャ| |------------------------|-------------------------------| @@ -66,15 +69,15 @@ ms.lasthandoff: 11/21/2017 ここで、 *subexpression* は有効な正規表現パターンです。 かっこを使用するキャプチャには、正規表現の左かっこの順番に基づいて、左から右に自動的に 1 から始まる番号が付けられます。 番号が 0 になるキャプチャは、正規表現パターン全体と一致するテキストです。 > [!NOTE] -> 既定では、 `(`*subexpression*`)` 言語要素が、一致する部分式をキャプチャします。 場合に、正規表現パターン一致メソッドのパラメーターが含まれています、フラグ、または、`n`オプションがこの部分式に適用される (を参照してください[グループ オプション](#group_options)このトピックで後述) では、一致した部分式はキャプチャされません。 +> 既定では、 `(`*subexpression*`)` 言語要素が、一致する部分式をキャプチャします。 ただし、正規表現パターン一致メソッドの パラメーターに フラグが含まれる場合や、`n` オプションがこの部分式に適用される場合は (このトピックで後述する「[グループ オプション](#group_options)」を参照)、一致した部分式はキャプチャされません。 キャプチャされたグループにアクセスする方法は 4 つあります。 -- 正規表現内で前方参照構成体を使用する。 構文を使用して、同じ正規表現で一致した部分式が参照されている`\`*数*ここで、*数*はキャプチャされた部分式の序数。 +- 正規表現内で前方参照構成体を使用する。 `\`*number* という構文を使うと、一致した部分式が同じ正規表現内で参照されます。ここで、*number* はキャプチャされた部分式の序数です。 -- 正規表現内で名前付き前方参照構成体を使用する。 構文を使用して、同じ正規表現で一致した部分式が参照されている`\k<`*名前*`>`ここで、*名前*、キャプチャ グループの名前を指定または`\k<`*数*`>`ここで、*数*キャプチャ グループの序数します。 キャプチャ グループには、その序数と同じ既定の名前が付いています。 詳細については、このトピックで後述する「 [一致した名前付き部分式](#named_matched_subexpression) 」を参照してください。 +- 正規表現内で名前付き前方参照構成体を使用する。 `\k<`*name*`>` という構文 (*name* はキャプチャ グループの名前)、または `\k<`*number*`>` という構文 (*number* はキャプチャ グループの序数) を使用すると、一致した部分式が同じ正規表現内で参照されます。 キャプチャ グループには、その序数と同じ既定の名前が付いています。 詳細については、このトピックで後述する「 [一致した名前付き部分式](#named_matched_subexpression) 」を参照してください。 -- 使用して、 `$`*数*置換シーケンスをまたはメソッドを呼び出す場所*数*はキャプチャされた部分式の序数。 +- `$`*number* 置換シーケンスを、 メソッドまたは メソッドの呼び出しで使用する。ここで、*number* はキャプチャされた部分式の序数です。 - プログラムで プロパティによって返される オブジェクトを使用する。 コレクション内の位置 0 にあるメンバーは、正規表現に一致した文字列全体を表します。 後続の各メンバーは、一致した部分式を表します。 詳しくは、「 [Grouping Constructs and Regular Expression Objects](#Objects) 」セクションをご覧ください。 @@ -115,17 +118,17 @@ ms.lasthandoff: 11/21/2017 ここで、 *name* は有効なグループ名、 *subexpression* は有効な正規表現パターンです。 *name* は区切り記号を含まず、先頭が数字以外である必要があります。 > [!NOTE] -> 場合、正規表現パターン一致メソッドのパラメーターが含まれています、フラグ、または、`n`オプションがこの部分式に適用される (を参照してください[グループ オプション](#group_options)このトピックで後述)、のみキャプチャする方法、部分式は明示的にグループの名前をキャプチャします。 +> 正規表現パターン一致メソッドの パラメーターに フラグが含まれる場合や、`n` オプションがこの部分式に適用される場合は (このトピックで後述する「[グループ オプション](#group_options)」を参照)、部分式をキャプチャする唯一の方法は、キャプチャ グループの名前を明示的に指定することです。 キャプチャされた名前付きグループには次の方法でアクセスできます。 -- 正規表現内で名前付き前方参照構成体を使用する。 構文を使用して、同じ正規表現で一致した部分式が参照されている`\k<`*名前*`>`ここで、*名前*キャプチャされた部分式の名前を指定します。 +- 正規表現内で名前付き前方参照構成体を使用する。 `\k<`*name*`>` という構文を使用すると、一致した部分式が同じ正規表現内で参照されます。ここで、*name* はキャプチャされた部分式の名前です。 -- 正規表現内で前方参照構成体を使用する。 構文を使用して、同じ正規表現で一致した部分式が参照されている`\`*数*ここで、*数*はキャプチャされた部分式の序数。 一致した名前付き部分式には、一致した部分式の後、左から右に連続した番号が付けられます。 +- 正規表現内で前方参照構成体を使用する。 `\`*number* という構文を使うと、一致した部分式が同じ正規表現内で参照されます。ここで、*number* はキャプチャされた部分式の序数です。 一致した名前付き部分式には、一致した部分式の後、左から右に連続した番号が付けられます。 -- 使用して、 `${`*名前*`}`置換シーケンスをまたはメソッドを呼び出す場所*名前*キャプチャされた部分式の名前を指定します。 +- `${`*name*`}` 置換シーケンスを、 メソッドまたは メソッドの呼び出しで使用する。ここで、*name* はキャプチャされた部分式の名前です。 -- 使用して、 `$`*数*置換シーケンスをまたはメソッドを呼び出す場所*数*はキャプチャされた部分式の序数。 +- `$`*number* 置換シーケンスを、 メソッドまたは メソッドの呼び出しで使用する。ここで、*number* はキャプチャされた部分式の序数です。 - プログラムで プロパティによって返される オブジェクトを使用する。 コレクション内の位置 0 にあるメンバーは、正規表現に一致した文字列全体を表します。 後続の各メンバーは、一致した部分式を表します。 キャプチャされた名前付きグループは、キャプチャされた番号付きグループの後にコレクションに格納されます。 @@ -228,32 +231,32 @@ ms.lasthandoff: 11/21/2017 最後の部分式の `(?(Open)(?!))`は、入力文字列内の入れ子の構成体の数が一致しているかどうかを示します (各左山かっこに一致する右山かっこが存在するかどうかなど)。 有効なキャプチャ グループに基づく条件一致を使います。詳しくは、「 [Alternation Constructs](../../../docs/standard/base-types/alternation-constructs-in-regular-expressions.md)」をご覧ください。 `Open` グループが定義されている場合は、正規表現エンジンによって、入力文字列内で部分式 `(?!)` の照合が試行されます。 `Open` グループは、入れ子の構成体の数が一致していない場合にのみ定義する必要があります。 したがって、入力文字列で照合されるパターンでは、照合は常に失敗します。 この場合、 `(?!)` は、常に失敗するゼロ幅の否定先読みアサーションです。入力文字列内の次の位置に、必ず空の文字列が暗黙的に存在するためです。 - 例では、正規表現エンジンは、入力文字列を評価"\< mno\>"次の表に示すようにします。 + この例では、正規表現エンジンによって、次の表に示すように入力文字列 "\>" が評価されます。 |手順|パターン|結果| |----------|-------------|------------| |1|`^`|入力文字列の先頭から照合を開始します。| |2|`[^<>]*`|左山かっこの前にある山かっこではない文字を検索します。一致する項目は見つかりません。| -|3|`(((?'Open'<)`|左山かっこと一致する"\"に割り当てます、`Open`グループ。| +|3|`(((?'Open'<)`|"\" の左山かっこと一致し、そのかっこを `Open` グループに代入します。| |4|`[^<>]*`|"abc" と一致します。| |5|`)+`|"
入力文字列内の次の文字は左山かっこではないので、正規表現エンジンは `(?'Open'<)[^<>]*)` サブパターンに戻りません。| -|6|`((?'Close-Open'>)`|右山かっこと一致する"\"、"abc"は、部分文字列を割り当てます間、`Open`グループと、右山かっこに、`Close`グループ化、および現在の値を削除 ("<") の`Open`グループ空のままにします。| +|6|`((?'Close-Open'>)`|"\" の右山かっこと一致し、`Open` グループと右山かっこの間の部分文字列である "abc" を `Close` グループに代入して、`Open` グループの現在の値 ("<") を削除してグループを空にします。| |7|`[^<>]*`|右山かっこの後にある山かっこではない文字を検索します。一致する項目は見つかりません。| |8|`)+`|3 番目のキャプチャ グループの値は ">" です。

入力文字列内の次の文字は右山かっこではないので、正規表現エンジンは `((?'Close-Open'>)[^<>]*)` サブパターンに戻りません。| -|9|`)*`|最初のキャプチャ グループの値が"\"です。

入力文字列内の次の文字は左山かっこなので、正規表現エンジンは `(((?'Open'<)` サブパターンに戻ります。| -|10|`(((?'Open'<)`|左山かっこと一致する"\"に割り当てます、`Open`グループ。 その コレクションには、現在、単一の値 "<" が含まれています。| +|9|`)*`|最初のキャプチャ グループの値は "\" です。

入力文字列内の次の文字は左山かっこなので、正規表現エンジンは `(((?'Open'<)` サブパターンに戻ります。| +|10|`(((?'Open'<)`|"\" の左山かっこと一致し、そのかっこを `Open` グループに代入します。 その コレクションには、現在、単一の値 "<" が含まれています。| |11|`[^<>]*`|"mno" と一致します。| |12|`)+`|"
入力文字列内の次の文字は左山かっこなので、正規表現エンジンは `(?'Open'<)[^<>]*)` サブパターンに戻ります。| -|13|`(((?'Open'<)`|左山かっこと一致する"\"に割り当てます、`Open`グループ。 のコレクション、`Open`グループが 2 つのキャプチャを含むようになりました: 左山かっこ"\"、および左山かっこから"\"です。| +|13|`(((?'Open'<)`|"\" の左山かっこと一致し、そのかっこを `Open` グループに代入します。 `Open` グループの コレクションには、現在、"\" の左山かっこと "\" の左山かっこの 2 つのキャプチャが含まれています。| |14|`[^<>]*`|"xyz" と一致します。| -|15|`)+`|"
入力文字列内の次の文字は左山かっこではないので、正規表現エンジンは `(?'Open'<)[^<>]*)` サブパターンに戻りません。| -|16|`((?'Close-Open'>)`|右山かっこと一致する"\"です。 "xyz" は `Open` グループと右山かっこの間の部分文字列を `Close` グループに代入して、 `Open` グループの現在の値を削除します。 前のキャプチャの値 (で左山かっこ"\") の現在の値になります、`Open`グループ。 のコレクション、`Open`グループにはここで、単一のキャプチャ、左山かっこが含まれています"\"です。| +|16|`)+`|"
入力文字列内の次の文字は左山かっこではないので、正規表現エンジンは `(?'Open'<)[^<>]*)` サブパターンに戻りません。| +|16|`((?'Close-Open'>)`|"\" の右山かっこと一致します。 "xyz" は `Open` グループと右山かっこの間の部分文字列を `Close` グループに代入して、 `Open` グループの現在の値を削除します。 前のキャプチャの値 ("\" の左山かっこ) が `Open` グループの現在の値になります。 `Open` グループの コレクションには、現在、単一のキャプチャ ("\" の左山かっこ) が含まれています。| |17|`[^<>]*`|山かっこではない文字を検索します。一致する項目は見つかりません。| |18|`)+`|3 番目のキャプチャ グループの値は ">" です。

入力文字列内の次の文字は右山かっこなので、正規表現エンジンは `((?'Close-Open'>)[^<>]*)` サブパターンに戻ります。| -|19|`((?'Close-Open'>)`|最後の右山かっこと一致する"xyz >>"、割り当てます"mno\"(間の部分文字列、`Open`グループと、右の山かっ) に、`Close`グループ化、および現在の値を削除、`Open`グループ。 `Open` グループは空になります。| +|19|`((?'Close-Open'>)`|"xyz>>" の最後の右山かっこと一致し、"mno\" (`Open` グループと右山かっこの間の部分文字列) を `Close` グループに代入して、`Open` グループの現在の値を削除します。 `Open` グループは空になります。| |20|`[^<>]*`|山かっこではない文字を検索します。一致する項目は見つかりません。| |21|`)+`|3 番目のキャプチャ グループの値は ">" です。

入力文字列内の次の文字は右山かっこではないので、正規表現エンジンは `((?'Close-Open'>)[^<>]*)` サブパターンに戻りません。| -|22|`)*`|最初のキャプチャ グループの値は"< mno\>"です。

入力文字列内の次の文字は左山かっこではないので、正規表現エンジンは `(((?'Open'<)` サブパターンに戻りません。| +|22|`)*`|最初のキャプチャ グループの値は ">" です。

入力文字列内の次の文字は左山かっこではないので、正規表現エンジンは `(((?'Open'<)` サブパターンに戻りません。| |23|`(?(Open)(?!))`|`Open` グループは定義されていないので、照合は試行されません。| |24|`$`|入力文字列の末尾と一致します。| @@ -477,6 +480,6 @@ ms.lasthandoff: 11/21/2017 最初のキャプチャ グループは、文の各単語と一致します。 2 番目のキャプチャ グループは、各単語およびその単語に続く句読点や空白と一致します。 インデックスが 2 の オブジェクトは、2 番目のキャプチャ グループと一致したテキストの情報を保持します。 キャプチャ グループによってキャプチャされたすべての単語は、 プロパティによって返される オブジェクトから取得できます。 -## 関連項目 +## 参照 [正規表現言語 - クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) [バックトラッキング](../../../docs/standard/base-types/backtracking-in-regular-expressions.md) diff --git a/docs/standard/base-types/how-to-define-and-use-custom-numeric-format-providers.md b/docs/standard/base-types/how-to-define-and-use-custom-numeric-format-providers.md index 0f77799a474..0789b9dc5cf 100644 --- a/docs/standard/base-types/how-to-define-and-use-custom-numeric-format-providers.md +++ b/docs/standard/base-types/how-to-define-and-use-custom-numeric-format-providers.md @@ -21,54 +21,57 @@ helpviewer_keywords: - format providers [.NET Framework] - custom format strings ms.assetid: a281bfbf-6596-45ed-a2d6-3782d535ada2 -caps.latest.revision: "11" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 0e44a909eb92f0d9dfa21980a918a2d370dcf427 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f8f06335d96b3e71f14b3df6b40ef3691c0915f1 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法 : カスタム数値書式プロバイダーを定義して使用する -[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)]に制御する広範な数値の文字列形式。 数値の書式をカスタマイズするため、次の機能をサポートしています。 +[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] では、数値の文字列形式を広範囲に制御できます。 数値の書式をカスタマイズするため、次の機能をサポートしています。 -- 標準の数値書式指定文字列: 数値をその文字列形式に変換するための定義済みの書式セットを提供します。 それらをなど、書式指定メソッド、任意の数値で使用できますを持つ、`format`パラメーター。 詳細については、「[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md)です。 +- 標準の数値書式指定文字列: 数値をその文字列形式に変換するための定義済みの書式セットを提供します。 これらは、`format` パラメーターを持つ などの数値書式指定メソッドと共に使用できます。 詳細については、「[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md)」を参照してください。 -- カスタム数値書式指定文字列: カスタム数値書式指定子を定義するために結合できる記号のセットを提供します。 などの書式設定メソッド、任意の数値で使用することもできますを持つ、`format`パラメーター。 詳細については、「[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)です。 +- カスタム数値書式指定文字列: カスタム数値書式指定子を定義するために結合できる記号のセットを提供します。 これらは、`format` パラメーターを持つ などの任意の数値書式指定メソッドでも使用できます。 詳細については、「[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)」を参照してください。 -- カスタムまたはシンボルを定義し、数値の文字列形式を表示するために使用されるパターンの書式を設定するオブジェクト。 それらをなど、書式指定メソッド、任意の数値で使用できますを持つ、`provider`パラメーター。 通常、`provider`パラメーターを使用して、カルチャ固有の書式設定を指定します。 +- カスタムの オブジェクトまたは オブジェクト: 記号を定義し、数値の文字列形式を表示するために使用されるパターンの書式を設定します。 これらは、`provider` パラメーターを持つ などの数値書式指定メソッドと共に使用できます。 通常、`provider` パラメーターは、カルチャに固有の書式を指定するために使用されます。 - 一部の例には (アプリケーションで書式設定されたアカウント番号や ID 番号、郵便番号を表示する必要がある場合など)、これら 3 つの方法は適していません。 [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)]どちらである書式設定オブジェクトを定義することもできます、数値を書式設定する方法を決定するオブジェクト。 このトピックでは、このようなオブジェクトを実装するため、詳細な手順を説明し、電話番号の書式を設定する例について説明します。 + 一部の例には (アプリケーションで書式設定されたアカウント番号や ID 番号、郵便番号を表示する必要がある場合など)、これら 3 つの方法は適していません。 [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] では、 または オブジェクトでもない書式設定オブジェクトを定義して、数値を書式設定する方法を決定することもできます。 このトピックでは、このようなオブジェクトを実装するため、詳細な手順を説明し、電話番号の書式を設定する例について説明します。 ### カスタム書式プロバイダーを定義するには -1. 実装するクラスを定義、インターフェイスです。 +1. および インターフェイスを実装するクラスを定義します。 -2. メソッドを実装します。 コールバック メソッドを書式設定メソッド (など、メソッド) を実際にはカスタム書式設定を行うオブジェクトを取得するために呼び出します。 一般的な実装は次の実行します。 +2. メソッドを実装します。 は、書式指定メソッド ( メソッドなど) が実際にカスタム書式設定の実行を担当するオブジェクトを取得するために呼び出すコールバック メソッドです。 の一般的な実装では、次が実行されます。 - 1. 決定するかどうか、オブジェクト メソッドとして渡されるパラメーターを表します、インターフェイスです。 + 1. メソッド パラメーターとして渡される オブジェクトが インターフェイスを表すかどうかを決定します。 - 2. パラメーターが表している場合、インターフェイス、を実装するオブジェクトを返します、カスタム書式設定を提供するインターフェイスです。 通常、カスタム書式指定オブジェクトは、それ自体を返します。 + 2. パラメーターが インターフェイスを表す場合、 はカスタム書式設定の提供を担当する インターフェイスを実装するオブジェクトを返します。 通常、カスタム書式指定オブジェクトは、それ自体を返します。 - 3. パラメーターを表していない場合、インターフェイス、返します`null`です。 + 3. パラメーターが インターフェイスを表していない場合、 は、`null` を返します。 -3. メソッドを実装します。 このメソッドは、メソッド、数値の文字列形式を返すことを行います。 メソッドの実装には通常、次の作業を行います。 +3. メソッドを実装します。 このメソッドは、 メソッドによって呼び出され、数値の文字列形式を返します。 メソッドの実装には通常、次の作業を行います。 - 1. 必要に応じて、メソッドが確認するには書式指定サービスを提供する正当なものであることを確認、`provider`パラメーター。 両方を実装するオブジェクトを書式設定の、テストが必要、`provider`現在の書式設定オブジェクトと等しいかどうかのパラメーターです。 + 1. 必要に応じて、`provider` パラメーターを調べることで、メソッドが書式指定サービスを提供する正当なものであることを確認します。 の両方を実装する書式設定オブジェクトの場合、現在の書式設定オブジェクトと等しいことを確認するため、`provider` パラメーターをテストする必要があります。 - 2. 書式指定オブジェクトが、カスタム書式指定子をサポートするかどうかを決定します (たとえば、"N" 書式指定子は、米国の電話番号を NANP 形式で出力することを示し、"I" はITU-T 推奨 E.123 形式での出力を示すことができます)。書式指定子を使用している場合、メソッドが特定の書式指定子を処理する必要があります。 内のメソッドに渡されます、`format`パラメーター。 指定子にも存在する場合の値、`format`パラメーターはします。 + 2. 書式指定オブジェクトが、カスタム書式指定子をサポートするかどうかを決定します (たとえば、"N" 書式指定子は、米国の電話番号を NANP 形式で出力することを示し、"I" はITU-T 推奨 E.123 形式での出力を示すことができます)。書式指定子を使用している場合、メソッドが特定の書式指定子を処理する必要があります。 これが `format` パラメーターのメソッドに渡されます。 指定子がない場合、`format` パラメーターの値は です。 - 3. としてメソッドに渡される数値の値を取得、`arg`パラメーター。 文字列形式に変換するために必要な操作を実行します。 + 3. `arg` パラメーターとしてメソッドに渡される数値を取得します。 文字列形式に変換するために必要な操作を実行します。 - 4. 文字列表現を返します、`arg`パラメーター。 + 4. `arg` パラメーターの文字列表現を返します。 ### カスタム数値書式設定オブジェクトを使用するには 1. カスタム書式指定クラスの新しいインスタンスを作成します。 -2. 呼び出す、メソッドを書式設定、カスタム書式指定オブジェクトを書式指定子を渡すこと (またはいずれかを使用しない場合、)、および書式設定する数値。 +2. それをカスタム書式指定オブジェクト、書式指定子 (使用されていない場合は )、および書式設定する数値に渡す、 書式指定メソッドを呼び出します。 ## 例 次の例では、米国の電話番号を表す数値を NANP または E.123 形式に変換する、`TelephoneFormatter` という名前のカスタム数値書式プロバイダーを定義します。 このメソッドは、"N" (NANP 形式を出力) と "I" (国際 E.123 形式を出力) の 2 つの書式指定子を処理します。 @@ -76,9 +79,9 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Formatting.HowTo.NumericValue#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.NumericValue/cs/Telephone1.cs#1)] [!code-vb[Formatting.HowTo.NumericValue#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.NumericValue/vb/Telephone1.vb#1)] - カスタム数値書式プロバイダーでのみ使用することができます、メソッドです。 数値書式指定メソッドの他のオーバー ロード (など`ToString`) 型のパラメーターがあるすべて合格、実装、を表すオブジェクト、型です。 返すメソッドを代わりに、期待どおり、オブジェクト。 そうでない場合は、カスタム数値書式プロバイダーは無視されます、およびオブジェクトの代わりに、現在のカルチャが使用されます。 例では、`TelephoneFormatter.GetFormat`メソッド型の数値書式指定メソッドのパラメーターを確認し、返すことでメソッドに不適切な渡すことのできる可能性は処理`null`以外の型を表す場合です。 + カスタム数値書式プロバイダーは、 メソッドのみで使用できます。 型のパラメーターがある数値書式指定メソッド (`ToString` など) の他のオーバーロードはすべて、 型を表す オブジェクトの 実装を渡します。 代わりに、これらはメソッドが オブジェクトを返すことを期待します。 そうでない場合、カスタム数値書式プロバイダーは無視され、現在のカルチャの オブジェクトがその代わりに使用されます。 この例では、メソッド パラメーターを検査し、 以外の型を表す場合には `null` を返すことで、`TelephoneFormatter.GetFormat` メソッドはそれが書式指定メソッドに不適切に渡される可能性を処理します。 - カスタム数値書式プロバイダーでは、書式指定子のセットをサポートする場合に使用される書式項目の書式指定子が指定されていない場合、既定の動作を指定することを確認、メソッドの呼び出しです。 例では、"N" が既定の書式指定子です。 これにより、明示的な書式指定子を提供することによって、数値を書式設定された電話番号に変換できます。 このようなメソッドの呼び出しの例を次に示します。 + カスタム数値書式プロバイダーが一連の書式指定子をサポートしている場合、 メソッドの呼び出しで使用される書式指定項目で書式指定子が指定されていない場合に、既定の動作を提供することを確認します。 例では、"N" が既定の書式指定子です。 これにより、明示的な書式指定子を提供することによって、数値を書式設定された電話番号に変換できます。 このようなメソッドの呼び出しの例を次に示します。 [!code-csharp[Formatting.HowTo.NumericValue#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.NumericValue/cs/Telephone1.cs#2)] [!code-vb[Formatting.HowTo.NumericValue#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.NumericValue/vb/Telephone1.vb#2)] @@ -88,15 +91,15 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Formatting.HowTo.NumericValue#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.NumericValue/cs/Telephone1.cs#3)] [!code-vb[Formatting.HowTo.NumericValue#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.NumericValue/vb/Telephone1.vb#3)] - 既定の書式指定子が定義されていない場合の実装、その .NET 提供できるように書式設定コードがサポートされていないこと、メソッドは、次のようなコードを含める必要があります。 + 既定の書式指定子が定義されていない場合、 メソッドの実装には、使用しているコードでサポートされていない書式設定を .NET が提供できるように、次のようなコードを含める必要があります。 [!code-csharp[System.ICustomFormatter.Format#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.ICustomFormatter.Format/cs/format.cs#1)] [!code-vb[System.ICustomFormatter.Format#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.ICustomFormatter.Format/vb/Format.vb#1)] - この例の場合、メソッドを実装するをコールバック メソッドとして機能するためのものでは、メソッドです。 そのため、それを調べ、`formatProvider`現在への参照が含まれているかどうかのパラメーター`TelephoneFormatter`オブジェクト。 ただし、メソッドはコードから直接呼び出すこともできます。 その場合は、使用することができます、`formatProvider`を提供するパラメーター、またはをカルチャに固有の書式情報を提供するオブジェクト。 + この例の場合、 を実装するメソッドは、 メソッドのコールバック メソッドを果たす目的があります。 そのため、`formatProvider` パラメーターを調べ、現在の `TelephoneFormatter` オブジェクトへの参照が含まれるかどうかを判断します。 ただし、メソッドはコードから直接呼び出すこともできます。 その場合は、`formatProvider` パラメーターを使用して、カルチャに固有の書式情報を提供する オブジェクトまたは オブジェクトを提供することができます。 ## コードのコンパイル コマンド ラインで csc.exe または vb.exe を使用してコードをコンパイルします。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でコードをコンパイルするには、コンソール アプリケーション プロジェクト テンプレートの中にコードを配置します。 -## 関連項目 +## 参照 [書式設定操作の実行](../../../docs/standard/base-types/performing-formatting-operations.md) diff --git a/docs/standard/base-types/how-to-pad-a-number-with-leading-zeros.md b/docs/standard/base-types/how-to-pad-a-number-with-leading-zeros.md index 315140496b3..618122eef00 100644 --- a/docs/standard/base-types/how-to-pad-a-number-with-leading-zeros.md +++ b/docs/standard/base-types/how-to-pad-a-number-with-leading-zeros.md @@ -17,15 +17,18 @@ helpviewer_keywords: - number formatting [.NET Framework] - numbers [.NET Framework], format strings ms.assetid: 0b2c2cb5-c580-4891-8d81-cb632f5ec384 -caps.latest.revision: "10" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 6266807a01e8119ae1410a1ba09cab55c788b4d8 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 7ea854f69e59c614d03f10ff546bd3181f5b51ff +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 数値に先行するゼロを埋め込む 整数値に先行ゼロを追加するには、精度指定子と[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md) "D" を使用します。 整数値と浮動小数点数値の両方に先行ゼロを追加するには、[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)を使用します。 このトピックでは、この両方の方法で数値に先行ゼロを埋め込む方法を説明します。 @@ -36,11 +39,11 @@ ms.lasthandoff: 11/21/2017 2. 整数値を 10 進数値と 16 進数値のどちらで表示するかを決定します。 - - 表示するには、整数、10 進値として呼び出すその`ToString(String)`メソッド、およびパス、文字列"D*n*"の値として、`format`パラメーター、場所 *n* 文字列の最小の長さを表します。 + - 整数値を 10 進数値として表示するには、`ToString(String)` メソッドを呼び出し、`format` パラメーターの値として文字列 "D*n*" を渡します。この *n* は文字列の最小長を表します。 - - 表示するには、整数の 16 進数値として呼び出すその`ToString(String)`メソッドと、文字列のパス"X*n*"の値として、`format`パラメーター、場所 *n* 文字列の最小の長さを表します。 + - 整数値を 16 進数値として表示するには、`ToString(String)` メソッドを呼び出し、`format` パラメーターの値として文字列 "X*n*" を渡します。この *n* は文字列の最小長を表します。 - などもメソッドでは、この書式指定文字列を使用することができますまたはを使用して[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)です。 + また、 など、[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)を使用するメソッドでもこの書式指定文字列を使用できます。 次の例は、書式指定された数値全体の長さが 8 文字以上になるように、先行ゼロを使用してさまざまな数値を書式指定します。 @@ -57,7 +60,7 @@ ms.lasthandoff: 11/21/2017 4. 書式指定した文字列に埋め込む先行ゼロの数を、埋め込まれていない数値の文字列の長さに加算します。 これにより、埋め込み文字列全体の長さが定義されます。 -5. 整数値を呼び出す`ToString(String)`メソッド、およびパス文字列"D*n*"10 進数文字列のおよび"X*n*"16 進数文字列の場合、 *n*埋め込み文字列全体の長さを表します。 使用することも、"D*n*"または"X*n*"複合書式指定をサポートするメソッドに文字列の書式を設定します。 +5. 整数値の `ToString(String)` メソッドを呼び出し、10 進数値文字列の場合は "D*n*"、16 進数値の場合は "X*n*" を渡します。*n* は埋め込み文字列全体の長さを表します。 書式指定文字列 "D*n*" または "X*n*" は、複合書式指定をサポートするメソッドでも使用できます。 次の例は、整数値に 5 つの先行ゼロを埋め込みます。 @@ -81,13 +84,13 @@ ms.lasthandoff: 11/21/2017 1. 数値に埋め込む先行ゼロの数を決定します。 -2. 埋め込みのない数値文字列での整数部の桁数を決定します。 この操作を行うには、次の手順を実行します。 +2. 埋め込みのない数値文字列での整数部の桁数を決定します。 手順は次のとおりです。 1. 文字列形式の数値に小数点が含まれるかどうかを決定します。 2. 小数点記号を含める場合は、整数部分の文字数を決定します。 - または + - または - 小数点記号を含めない場合は、文字列の長さを決定します。 @@ -100,7 +103,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Formatting.HowTo.PadNumber#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.PadNumber/cs/Pad1.cs#4)] [!code-vb[Formatting.HowTo.PadNumber#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.PadNumber/vb/Pad1.vb#4)] -## 関連項目 +## 参照 [Custom Numeric Format Strings](../../../docs/standard/base-types/custom-numeric-format-strings.md) [Standard Numeric Format Strings](../../../docs/standard/base-types/standard-numeric-format-strings.md) [複合書式指定](../../../docs/standard/base-types/composite-formatting.md) diff --git a/docs/standard/base-types/how-to-round-trip-date-and-time-values.md b/docs/standard/base-types/how-to-round-trip-date-and-time-values.md index b56d48e21ec..37466efa434 100644 --- a/docs/standard/base-types/how-to-round-trip-date-and-time-values.md +++ b/docs/standard/base-types/how-to-round-trip-date-and-time-values.md @@ -18,81 +18,84 @@ helpviewer_keywords: - time [.NET Framework], round-trip values - formatting strings [.NET Framework], round-trip values ms.assetid: b609b277-edc6-4c74-b03e-ea73324ecbdb -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 515a29e279cfa8fc100e0612fc19df7abc6a3b36 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 68667369e1c7541313a166a1066e1ad9d69b6b71 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法 : 日付と時刻の値をラウンドトリップさせる -ある特定の時点を明確に表すように日付と時刻の値を保つことは、多くのアプリケーションに共通する要件です。 このトピックの内容を保存および復元する方法を示しています、値、復元された値が保存されている値と同じ時間を識別できるようにゾーンの情報の値、および時刻と日付と時刻の値。 +ある特定の時点を明確に表すように日付と時刻の値を保つことは、多くのアプリケーションに共通する要件です。 このトピックでは、 値、 値、日時値と時間帯の情報を保存し、復元する方法について説明します。復元した値によって、保存した値と同じ時刻が識別されるようにします。 ### DateTime 値をラウンドトリップさせるには -1. 変換、を呼び出すことによって、文字列形式の値、 "o"書式指定子を持つメソッドです。 +1. メソッドを "o" 書式指定子と共に呼び出して、 値を対応する文字列形式に変換します。 -2. 文字列形式を保存、値をファイル、またはプロセス、アプリケーション ドメイン、またはコンピューターの境界を通過させます。 +2. 値の文字列形式をファイルに保存するか、プロセス、アプリケーション ドメイン、またはマシン境界を通過させます。 -3. 表す文字列を取得、値。 +3. 値を表す文字列を取得します。 -4. 呼び出す、メソッド、およびパスの値として、`styles`パラメーター。 +4. メソッドを呼び出し、`styles` パラメーターの値として を渡します。 - 次の例を示していますラウンドト リップする方法、値。 + 値をラウンドトリップさせる方法を次の例に示します。 [!code-csharp[Formatting.HowTo.RoundTrip#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/cs/RoundTrip.cs#1)] [!code-vb[Formatting.HowTo.RoundTrip#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/vb/RoundTrip.vb#1)] - 場合にラウンド トリップ、値、この手法は正常にすべてのローカルと協定世界時刻の時間保持します。 たとえば、ローカル値は、米国内のシステムに保存米国中部標準時タイム ゾーンのシステムで復元された場合、復元された日付と時刻は 2 つのタイム ゾーンの時差を反映し、元の時刻より 2 時間後になります。 ただし、タイム ゾーンが指定されていない時刻の場合、この方法では必ずしも正確な結果を得られるわけではありません。 すべて値を持つプロパティははローカル時刻として扱われます。 この場合、これがない場合、は正常に、適切な時点を時間で識別できません。 この制限を回避するには、日付と時刻の値と該当するタイム ゾーンを確実に関連付けてから保存操作と復元操作を行います。 + 値をラウンドトリップさせる場合、この方法により、あらゆる現地時刻と協定世界時刻を適切に保存できます。 たとえば、現地時刻の 値が米国太平洋標準時タイム ゾーンのシステムで保存され、米国中部標準時タイム ゾーンのシステムで復元された場合、復元された日付と時刻は 2 つのタイム ゾーンの時差を反映し、元の時刻より 2 時間後になります。 ただし、タイム ゾーンが指定されていない時刻の場合、この方法では必ずしも正確な結果を得られるわけではありません。 プロパティが であるすべての 値がローカル時間のように扱われます。 それ以外では、 は間違った時点を示すことになります。 この制限を回避するには、日付と時刻の値と該当するタイム ゾーンを確実に関連付けてから保存操作と復元操作を行います。 ### DateTimeOffset 値をラウンドトリップさせるには -1. 変換、を呼び出すことによって、文字列形式の値、 "o"書式指定子を持つメソッドです。 +1. メソッドを "o" 書式指定子と共に呼び出して、 値を対応する文字列形式に変換します。 -2. 文字列形式を保存、値をファイル、またはプロセス、アプリケーション ドメイン、またはコンピューターの境界を通過させます。 +2. 値の文字列形式をファイルに保存するか、プロセス、アプリケーション ドメイン、またはマシン境界を通過させます。 -3. 表す文字列を取得、値。 +3. 値を表す文字列を取得します。 -4. 呼び出す、メソッド、およびパスの値として、`styles`パラメーター。 +4. メソッドを呼び出し、`styles` パラメーターの値として を渡します。 - 次の例を示していますラウンドト リップする方法、値。 + 値をラウンドトリップさせる方法を次の例に示します。 [!code-csharp[Formatting.HowTo.RoundTrip#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/cs/RoundTrip.cs#2)] [!code-vb[Formatting.HowTo.RoundTrip#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/vb/RoundTrip.vb#2)] - この手法を常に明確に識別、時間内の単一ポイントとしての値。 値から変換できるを世界協定時刻 (UTC) を呼び出して、メソッド、またはそのは呼び出すことでの特定のタイム ゾーンの時刻に変換できる、またはメソッドです。 この手法の大きな限界は、その日付と時刻の算術演算子で実行されると、を特定のタイム ゾーンの時刻を表す値ではそのタイム ゾーンの正確な結果が得られない可能性があります。 これは、ためと、値がインスタンス化される、そのタイム ゾーンの関連付けが解除されします。 したがって、日付と時刻の計算を実行した場合、タイム ゾーンの調整規則は適用されなくなります。 この問題を回避するには、日付と時刻の値、および付随するタイム ゾーンの両方を保持するカスタム型を定義します。 + この方法により、 値は常にある特定の時点として明確に識別されます。 識別されたら、 メソッドを呼び出すことで、この値を協定世界時 (UTC) に変換できます。あるいは、 または メソッドを呼び出すことで、特定のタイム ゾーンの時刻に変換できます。 この方法には、特定のタイム ゾーンの時刻を表す 値に対して日付と時刻の演算を行ったときに、そのタイム ゾーンにおける正確な結果を得ることができない場合があるという重要な制限があります。 これは、 値をインスタンス化すると、対応するタイム ゾーンとの関連付けが解除されるためです。 したがって、日付と時刻の計算を実行した場合、タイム ゾーンの調整規則は適用されなくなります。 この問題を回避するには、日付と時刻の値、および付随するタイム ゾーンの両方を保持するカスタム型を定義します。 -### そのタイム ゾーンの日付と時刻の値をラウンドト リップさせる +### 日時値とそのタイム ゾーンをラウンドトリップするには -1. クラスまたは 2 つのフィールドを持つ構造体を定義します。 いずれかの最初のフィールドは、またはオブジェクト、および 2 つ目は、オブジェクト。 次の例は、このような型の簡易バージョンです。 +1. クラスまたは構造と 2 つのフィールドを定義します。 最初のフィールドは または オブジェクトです。2 つ目のフィールドは オブジェクトです。 次の例は、このような型を簡易にしたものです。 [!code-csharp[Formatting.HowTo.RoundTrip#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/cs/RoundTrip.cs#3)] [!code-vb[Formatting.HowTo.RoundTrip#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/vb/RoundTrip.vb#3)] -2. クラスを宣言、属性。 +2. クラスに 属性を付けます。 -3. 使用してオブジェクトをシリアル化、メソッドです。 +3. メソッドを使用し、オブジェクトをシリアル化します。 -4. オブジェクトを使用して、復元、メソッドです。 +4. メソッドを使用し、オブジェクトを復元します。 -5. キャスト (C# の場合) か、適切な型のオブジェクトに逆シリアル化されたオブジェクト (Visual Basic で) に変換します。 +5. 逆シリアル化されたオブジェクトを適切な型のオブジェクトにキャスト (C# の場合) するか、変換 (Visual Basic の場合) します。 - 次の例では、日付と時刻とタイム ゾーン情報が格納されたオブジェクトをラウンドト リップさせる方法を示します。 + 次の例では、日時とタイム ゾーン情報の両方を保存するオブジェクトをラウンドトリップする方法を確認できます。 [!code-csharp[Formatting.HowTo.RoundTrip#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/cs/RoundTrip.cs#4)] [!code-vb[Formatting.HowTo.RoundTrip#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/vb/RoundTrip.vb#4)] - この方法は、どちらも、保存し、復元、および前に待機する時間組み合わされた日付と時刻とタイム ゾーン オブジェクトの実装と同期するように日付値を許可されていないこと、適切な時点を反映常に明確にする必要があります、タイム ゾーンの値です。 + この手法では、日時とタイム ゾーン オブジェクトを組み合わせるとき、日付値とタイム ゾーン値の同期が外れてはならないとき、保存と復元の前後で必ず、常に正しい時点を不明瞭なところなく反映する必要があります。 ## コードのコンパイル これらの例には次の項目が必要です。 -- 次の名前空間は、c# を使用してインポートする`using`ステートメントまたは[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)]`Imports`ステートメント。 +- 次の名前空間を C# `using` ステートメントまたは [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] `Imports` ステートメントでインポートすること: - - (C# の場合のみ)。 + - (C# のみ)。 - 。 @@ -102,11 +105,11 @@ ms.lasthandoff: 11/21/2017 - 。 -- System.Core.dll への参照。 +- System.Core.dll の参照。 -- 各のコード例では、以外の場合、 `DateInTimeZone` 、クラスのクラスまたは Visual Basic モジュールに含まれる、メソッドでは、ラップされたおよびから呼び出される必要がある、`Main`メソッドです。 +- `DateInTimeZone` クラス以外、各コード例はクラスまたは Visual Basic モジュールに含め、メソッドでラップし、`Main` メソッドから呼び出します。 -## 関連項目 +## 参照 [書式設定操作の実行](../../../docs/standard/base-types/performing-formatting-operations.md) [DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け](../../../docs/standard/datetime/choosing-between-datetime.md) [Standard Date and Time Format Strings](../../../docs/standard/base-types/standard-date-and-time-format-strings.md) diff --git a/docs/standard/base-types/miscellaneous-constructs-in-regular-expressions.md b/docs/standard/base-types/miscellaneous-constructs-in-regular-expressions.md index 41592590229..a6eb6c8744b 100644 --- a/docs/standard/base-types/miscellaneous-constructs-in-regular-expressions.md +++ b/docs/standard/base-types/miscellaneous-constructs-in-regular-expressions.md @@ -16,15 +16,18 @@ helpviewer_keywords: - .NET Framework regular expressions, miscellaneous constructs - regular expressions, miscellaneous constructs ms.assetid: 7d10d11f-680f-4721-b047-fb136316b4cd -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 9b33d196a7af9bc5a1f81c1624bbd98fea074319 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 7a7c577c617ca8f40d64548f9f0f2d103c5887e1 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 正規表現でのその他の構成体 .NET の正規表現には、次の 3 つのその他の言語コンストラクトが含まれます。 1 つは、正規表現パターンの途中で特定の一致オプションを有効または無効にすることができます。 残りの 2 つは、正規表現にコメントを含めることができます。 @@ -46,12 +49,12 @@ ms.lasthandoff: 10/18/2017 |`s`|単一行モード。| |`x`|エスケープされていない空白を無視し、x モード コメントを許可します。| - によって定義された正規表現のオプションを変更しても、`(?imnsx-imnsx)`外側のグループが終了するまで有効ではままを構築します。 + `(?imnsx-imnsx)` コンストラクトによって定義された正規表現オプションの変更は、囲んでいるグループの末尾まで有効です。 > [!NOTE] -> `(?imnsx-imnsx:` *Subexpression* `)`グループ化構成体は、部分式と同じ機能を提供します。 詳しくは、「[正規表現でのグループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」をご覧ください。 +> `(?imnsx-imnsx:`*subexpression*`)` グループ化コンストラクトは、部分式と同じ機能を提供します。 詳しくは、「[正規表現でのグループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」をご覧ください。 - 次の例では、 `i`、 `n`、および`x`オプションの大文字小文字を区別しないと、明示的なキャプチャを有効にして、正規表現の途中で正規表現パターンの空白を無視します。 + 次の例では `i`、`n`、`x` オプションを使用して、大文字と小文字の区別をせず、明示的なキャプチャを有効にして、正規表現の途中の正規表現パターン内の空白を無視します。 [!code-csharp[RegularExpressions.Language.Miscellaneous#1](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.miscellaneous/cs/miscellaneous1.cs#1)] [!code-vb[RegularExpressions.Language.Miscellaneous#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.miscellaneous/vb/miscellaneous1.vb#1)] @@ -64,11 +67,11 @@ ms.lasthandoff: 10/18/2017 |`(D\w+)`|大文字 "D" の後に 1 つ以上の単語の文字が続くパターンに一致します。 これが最初のキャプチャ グループです。| |`(?ixn)`|この時点から、大文字と小文字を区別しない比較を行い、明示的なキャプチャのみを行って、正規表現パターン内の空白を無視します。| |`\s`|空白文字と一致します。| -|`(d\w+)`|大文字または小文字 "d" の後に 1 つ以上の単語の文字が続くパターンに一致します。 このグループはキャプチャされません、 `n` (明示的なキャプチャ) オプションが有効になっている.| +|`(d\w+)`|大文字または小文字 "d" の後に 1 つ以上の単語の文字が続くパターンに一致します。 `n` (明示的なキャプチャ) オプションが有効になっているため、このグループはキャプチャされません。| |`\b`|ワード境界に一致します。| ## インライン コメント - `(?#` *コメント*`)`コンストラクトでは、正規表現で、インライン コメントを追加できます。 によって返される文字列にコメントが含まれています、正規表現エンジンが、パターン マッチでコメントの任意の部分を使用しない、メソッドです。 コメントは、最初の閉じかっこで終了します。 + `(?#` *comment*`)` コンストラクトを使用して、正規表現にインライン コメントを含めることができます。 メソッドによって返される文字列にコメントが含まれますが、正規表現エンジンは、パターン マッチングでコメントのどの部分も使用しません。 コメントは、最初の閉じかっこで終了します。 次の例では、前のセクションの例の最初の正規表現パターンを繰り返しています。 比較で大文字小文字を区別するかどうかを示す 2 つのインライン コメントを正規表現に追加しています。 正規表現パターン `\b((?# case-sensitive comparison)D\w+)\s((?#case-insensitive comparison)d\w+)\b` は、次のように定義されます。 @@ -87,7 +90,7 @@ ms.lasthandoff: 10/18/2017 [!code-vb[RegularExpressions.Language.Miscellaneous#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.miscellaneous/vb/miscellaneous2.vb#2)] ## 行末のコメント - 番号記号 (`#`)、正規表現パターンの末尾にエスケープされていない # 文字から開始され、行の末尾まで続きます x モード コメントをマークします。 このコンストラクトを使用する必要がありますか有効にする、 `x` (インライン オプション) を介してオプションかを指定、値を`option`パラメーターをインスタンス化するときに、オブジェクトまたは静的なを呼び出してメソッドです。 + シャープ記号 (`#`) は、正規表現パターンの末尾のエスケープ解除された # 文字から始まり、行の末尾まで続く x モード コメントをマークします。 このコンストラクトを使用するには、 オブジェクトをインスタンス化したり、静的 メソッドを呼び出したりする際に、`x` オプションを有効にする (インライン オプションによって) か、または `option` パラメーターに 値を指定する必要があります。 次の例は、行末のコメント コンストラクトを示しています。 これは、1 つ以上の書式指定項目を含む複合書式文字列かどうかを判断します。 次の表に、正規表現パターン内のコンストラクトを説明しています。 @@ -107,7 +110,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[RegularExpressions.Language.Miscellaneous#3](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.miscellaneous/cs/miscellaneous3.cs#3)] [!code-vb[RegularExpressions.Language.Miscellaneous#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.miscellaneous/vb/miscellaneous3.vb#3)] - なお、提供する代わりに、`(?x)`構築、正規表現内で、コメントでしたも認識されたを呼び出して、メソッドを渡すこと、列挙値。 + 正規表現で `(?x)` コンストラクトを指定する代わりに、 メソッドを呼び出し、それに 列挙値を渡して、コメントを認識させることもできることに注意してください。 -## 関連項目 +## 参照 [正規表現言語 - クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) diff --git a/docs/standard/base-types/padding.md b/docs/standard/base-types/padding.md index c32c96f0b06..c3f0ff2f85e 100644 --- a/docs/standard/base-types/padding.md +++ b/docs/standard/base-types/padding.md @@ -19,41 +19,44 @@ helpviewer_keywords: - PadLeft method - padding strings ms.assetid: 84a9f142-3244-4c90-ba02-21af9bbaff71 -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 29cd40645cf06ac9babb4738259938a3da04a155 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: ea903c1f950e7c226e043c1fa7276a66126b2512 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # .NET での文字列の埋め込み -次のいずれかを使用して先頭または末尾に指定された合計の長さを文字で埋められますが、元の文字列で構成される新しい文字列を作成するメソッド。 埋め込み文字にはスペースや指定した文字を利用できます。結果的に、右揃えまたは左揃えのように見えます。 +ある文字の先頭または末尾に文字を埋め込み、合計を指定の長さにするとき、元の文字列で構成される新しい文字列を次の メソッドの 1 つを利用して作成します。 埋め込み文字にはスペースや指定した文字を利用できます。結果的に、右揃えまたは左揃えのように見えます。 -|メソッド名|用途| +|メソッド名|使用| |-----------------|---------| ||文字列の先頭に文字を埋め込み、合計を指定の長さにします。| ||文字列の末尾に文字を埋め込み、合計を指定の長さにします。| ## PadLeft - メソッドは、指定された合計の長さを実現するために、元の文字列に先行するための十分な埋め込み文字を連結して新しい文字列を作成します。 メソッドは、埋め込み文字として空白文字を使用し、メソッドでは、独自の埋め込み文字を指定することができます。 + メソッドでは、元の文字列の先頭に埋め込み文字をつなげ、合計を指定の長さにすることで新しい文字列を作成します。 メソッドでは、空白文字が埋め込み文字として利用されます。 メソッドでは、独自の埋め込み文字を指定できます。 - 次のコード例では、 20 文字である新しい文字列を作成します。 この例は、コンソールに "`--------Hello World!`" と出力します。 + 次のコード例では、 メソッドを利用し、長さが 20 文字の新しい文字列を作成します。 この例は、コンソールに "`--------Hello World!`" と出力します。 [!code-cpp[Conceptual.String.BasicOps#3](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/padding.cpp#3)] [!code-csharp[Conceptual.String.BasicOps#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/padding.cs#3)] [!code-vb[Conceptual.String.BasicOps#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/padding.vb#3)] ## PadRight - メソッドは、指定された合計の長さを実現するために、元の文字列に十分な末尾の埋め込み文字を連結して新しい文字列を作成します。 メソッドは、埋め込み文字として空白文字を使用し、メソッドでは、独自の埋め込み文字を指定することができます。 + メソッドでは、元の文字列の末尾に埋め込み文字をつなげ、合計を指定の長さにすることで新しい文字列を作成します。 メソッドでは、空白文字が埋め込み文字として利用されます。 メソッドでは、独自の埋め込み文字を指定できます。 - 次のコード例では、 20 文字である新しい文字列を作成します。 この例は、コンソールに "`Hello World!--------`" と出力します。 + 次のコード例では、 メソッドを利用し、長さが 20 文字の新しい文字列を作成します。 この例は、コンソールに "`Hello World!--------`" と出力します。 [!code-cpp[Conceptual.String.BasicOps#4](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/padding.cpp#4)] [!code-csharp[Conceptual.String.BasicOps#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/padding.cs#4)] [!code-vb[Conceptual.String.BasicOps#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/padding.vb#4)] -## 関連項目 +## 参照 [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) diff --git a/docs/standard/base-types/parsing-datetime.md b/docs/standard/base-types/parsing-datetime.md index 99fc3b6ea0e..6c85a9b9790 100644 --- a/docs/standard/base-types/parsing-datetime.md +++ b/docs/standard/base-types/parsing-datetime.md @@ -20,58 +20,61 @@ helpviewer_keywords: - DateTime object - time strings ms.assetid: 43bae51e-9b1d-41a6-a187-772c0d096d90 -caps.latest.revision: "24" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 1beceb2b2d32c500e73cd7786c480fcd84c3001c -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 6e3ef01abdb615b2850b5a9d07e1208ee22eda95 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- -# 日付と時刻の文字列を .NET での解析 -解析メソッドを等価の日付と時刻の文字列形式の変換オブジェクト。 メソッドは、日付と時刻のいくつかの一般的な形式のいずれかを変換します。 メソッドは、日付と時刻の書式指定文字列で指定されたパターンに準拠した文字列形式を変換します。 ([標準の日付と時刻の書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)と[カスタムの日付と時刻の書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)に関するトピックをご覧ください)。 +# .NET での日付と時刻文字列の解析 +解析メソッドは、日付と時刻の文字列形式を等価の オブジェクトに変換します。 メソッドと メソッドでは、日付と時刻のいくつかの共通表現のいずれかを変換します。 メソッドと メソッドでは、日付と時刻の書式指定文字列で指定されたパターンに適合する文字列形式を変換します。 ([標準の日付と時刻の書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)と[カスタムの日付と時刻の書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)に関するトピックをご覧ください)。 - 解析は、日付と時刻の区切り記号、および月、日、および年号の名前に使用される文字列などの情報を提供する書式プロバイダーのプロパティの影響を受けます。 書式設定プロバイダーが現在またはによって明示的に現在のスレッド カルチャによって暗黙的に提供されているオブジェクト、解析メソッドのパラメーターです。 パラメーターを指定、カルチャを表す、オブジェクトまたはオブジェクト。 + 解析は、日付と時刻の区切り記号、および月、日、および年号の名前に使用される文字列などの情報を提供する書式プロバイダーのプロパティの影響を受けます。 書式プロバイダーは、現在の オブジェクトです。このオブジェクトは、現在のスレッド カルチャによって暗黙的に指定されるか、または解析するメソッドの パラメーターによって明示的に指定されます。 パラメーターには、カルチャを表す オブジェクト、または オブジェクトを指定します。 解析される日付の文字列形式には、月と、少なくとも日付または年を含める必要があります。 時刻の文字列形式は、時間と、少なくとも分または AM/PM 指定子を含める必要があります。 ただし、可能な場合は、解析により省略されたコンポーネントに既定値が指定されます。 欠落している日付には現在の日付が規定で設定され、欠落している年には現在の年が規定で設定され、欠落している月の日付には月の最初の日が規定で設定され、欠落している時刻には午前 0 時が規定で設定されます。 - 文字列形式を時刻のみを指定する場合の解析を返します、オブジェクトをその、およびの対応する値に設定されたプロパティ、プロパティです。 ただし場合、解析方法、結果の年、月、定数が指定されており、1 日プロパティの値に設定されます`1`です。 + 文字列形式で時刻のみを指定する場合、解析は、 プロパティの対応する値に、その プロパティを設定した オブジェクトを返します。 ただし、 定数が解析メソッドで指定されている場合、結果の年、月、日付のプロパティの値は `1` に設定されます。 - 日付と時刻のコンポーネントだけでなく、日付と時刻の文字列形式には、世界協定時刻 (UTC) と何時間異なるかを示すオフセットを含めることができます。 たとえば、文字列 "2/14/2007 5:32:00 -7:00" は、UTC より 7 時間早い時刻を定義します。 時刻の文字列表現からのオフセットを省略すると、解析、オブジェクトをそのプロパティに設定です。 場合のオフセットを指定すると、解析、オブジェクトをそのプロパティに設定し、その値は、コンピューターのローカル タイム ゾーンに調整します。 使用してこの動作を変更することができます、解析メソッドを使用して定数。 + 日付と時刻のコンポーネントだけでなく、日付と時刻の文字列形式には、世界協定時刻 (UTC) と何時間異なるかを示すオフセットを含めることができます。 たとえば、文字列 "2/14/2007 5:32:00 -7:00" は、UTC より 7 時間早い時刻を定義します。 オフセットが時刻の文字列形式から省略される場合、解析では、その プロパティに を設定して、 オブジェクトを返します。 オフセットが指定されている場合、解析では、その プロパティに を設定した オブジェクトと、使用しているマシンのローカル タイム ゾーンに調整された値を返します。 解析メソッドで 定数を使用して、この動作を変更できます。 書式プロバイダーは、あいまいな数値の日付を解釈するためにも使用されます。 たとえば、文字列 "02/03/04" で示された日付は、どのコンポーネントが月、日、年であるのかが明確ではありません。 この場合、コンポーネントは、書式プロバイダーの日付形式と同様の順序で解釈されます。 ## Parse - 次のコード例の使用を示しています、**解析**に文字列に変換するメソッド、 **DateTime**です。 この例では、現在のスレッドに関連付けられているカルチャを使用して、解析が実行されます。 場合、に現在関連付けられているカルチャは、入力文字列を解析できません、がスローされます。 + 次のコード例では、文字列を **DateTime** に変換するために、**Parse** メソッドを使用する方法を示します。 この例では、現在のスレッドに関連付けられているカルチャを使用して、解析が実行されます。 現在のカルチャに関連付けられている で入力文字列を解析できない場合、 がスローされます。 [!code-csharp[Parsing.DateAndTime#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Parsing.DateAndTime/cs/Example.cs#1)] [!code-vb[Parsing.DateAndTime#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Parsing.DateAndTime/vb/Example.vb#1)] - 指定することも、 **CultureInfo** 、そのオブジェクトで定義されているカルチャのいずれかに設定または標準のいずれかを指定できますによって返されるオブジェクト、プロパティです。 次のコード例にドイツ語の文字列を解析する書式設定プロバイダーを使用して、 **DateTime**です。 A **CultureInfo** DE-DE カルチャを表す定義は、この特定の文字列の解析を成功したことを確認する解析される文字列で渡されます。 そのため、すべての設定は、 **CurrentCulture**の**呼び出せるようになって**です。 + また、そのオブジェクトで定義されているカルチャのいずれかに設定される **CultureInfo** を指定するか、または プロパティによって返される標準の オブジェクトのいずれかを指定することもできます。 次のコード例は、書式プロバイダーを使用して、ドイツ語の文字列を **DateTime** に解析します。 この特定の文字列を正常に解析できるように、de-DE カルチャを示す **CultureInfo** が定義され、解析されている文字列と共に渡されます。 これで、**CurrentThread** の **CurrentCulture** にある、あらゆる設定が排除されます。 [!code-csharp[Parsing.DateAndTime#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Parsing.DateAndTime/cs/Example2.cs#2)] [!code-vb[Parsing.DateAndTime#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Parsing.DateAndTime/vb/Example2.vb#2)] - ただしのオーバー ロードを使用できますが、カスタム書式プロバイダーを指定するメソッド、メソッドは非標準の書式プロバイダーの使用をサポートしていません。 日付と時刻の標準形式で表現を解析するを使用して、メソッド代わりにします。 + ただし、 メソッドのオーバーロードを使用して、カスタム書式プロバイダーを指定することができますが、このメソッドでは非標準の書式プロバイダーの使用をサポートしていません。 非標準の書式設定で示された日付と時刻を解析するには、代わりに メソッドを使用します。 - 次のコード例では、に現在の日付と時刻の情報を追加されないことを指定する列挙体、 **DateTime**の文字列が定義されていないフィールドです。 + 次のコード例では、 列挙体を使用して、現在の日付と時刻の情報を、文字列で定義しないフィールドの **DateTime** に追加しないことを指定します。 [!code-csharp[Parsing.DateAndTime#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Parsing.DateAndTime/cs/Example3.cs#3)] [!code-vb[Parsing.DateAndTime#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Parsing.DateAndTime/vb/Example3.vb#3)] ## ParseExact - メソッドに指定した文字列のパターンに準拠している文字列を変換する、 **DateTime**オブジェクト。 このメソッドには、指定されたフォームのない文字列が渡されるときに、がスローされます。 標準の日付と時刻の書式指定子のいずれか、またはカスタムの日付と時刻の書式指定子の制限された組み合わせを指定することができます。 カスタムの書式指定子を使用すると、カスタムの認識文字列を構成することができます。 (指定子の詳細については、[標準の日付と時刻の書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)と[カスタムの日付と時刻の書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)に関するトピックをご覧ください)。 + メソッドは、指定された文字列パターンに準拠する文字列を **DateTime** オブジェクトに変換します。 指定された形式ではない文字列がこのメソッドに渡された場合、 がスローされます。 標準の日付と時刻の書式指定子のいずれか、またはカスタムの日付と時刻の書式指定子の制限された組み合わせを指定することができます。 カスタムの書式指定子を使用すると、カスタムの認識文字列を構成することができます。 (指定子の詳細については、[標準の日付と時刻の書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)と[カスタムの日付と時刻の書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)に関するトピックをご覧ください)。 - 各オーバー ロード、メソッドにもが、通常文字列の書式に関するカルチャ固有の情報を提供するパラメーターです。 通常、このオブジェクトが、標準カルチャを表すオブジェクト、またはによって返されるオブジェクト、プロパティです。 ただしとは異なり、その他の日付と時刻の関数の解析中、このメソッドもサポート、非標準の日付と時刻の形式を定義します。 + メソッドのオーバーロードごとに、通常は文字列の書式設定に関するカルチャ固有の情報を指定する パラメーターもあります。 通常、この オブジェクトは標準的なカルチャを表す オブジェクトか、 プロパティによって返される オブジェクトです。 ただし、その他の日付と時刻の解析関数とは異なり、このメソッドでは、非標準の日付と時刻の書式を定義する もサポートしています。 - 次のコード例では、 **ParseExact**メソッドに渡されます、文字列オブジェクトを解析するには、後に続く、書式指定子、 **CultureInfo**オブジェクト。 これは、 **ParseExact**メソッドは、EN-US カルチャで長い日付パターンを示す文字列を解析できるのみです。 + 次のコード例では、**ParseExact** メソッドに解析する文字列オブジェクト、書式指定子、**CultureInfo** オブジェクトが順に渡されます。 この **ParseExact** メソッドでは、en-US カルチャで長い形式の日付パターンを示す文字列のみを解析できます。 [!code-csharp[Parsing.DateAndTime#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Parsing.DateAndTime/cs/Example4.cs#4)] [!code-vb[Parsing.DateAndTime#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Parsing.DateAndTime/vb/Example4.vb#4)] -## 関連項目 - [文字列の解析](../../../docs/standard/base-types/parsing-strings.md) +## 参照 + [Parsing Strings](../../../docs/standard/base-types/parsing-strings.md) [型の書式設定](../../../docs/standard/base-types/formatting-types.md) [.NET での型変換](../../../docs/standard/base-types/type-conversion.md) diff --git a/docs/standard/base-types/parsing-numeric.md b/docs/standard/base-types/parsing-numeric.md index 571d373f4b7..7463f525c66 100644 --- a/docs/standard/base-types/parsing-numeric.md +++ b/docs/standard/base-types/parsing-numeric.md @@ -1,5 +1,5 @@ --- -title: ".NET の数値文字列の解析" +title: ".NET での数値文字列の解析" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -17,80 +17,83 @@ helpviewer_keywords: - enumerations [.NET Framework], parsing strings - base types, parsing strings ms.assetid: e39324ee-72e5-42d4-a80d-bf3ee7fc6c59 -caps.latest.revision: "20" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 3c9bb58b0d7b45ca197653742844be01ac3bbe41 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f84fcba0ef37fa45c3dd0fb3ba56f5f912bfc2f1 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- -# NET における数値文字列の解析 +# .NET での数値文字列の解析 すべての数値型には、2 つの静的解析メソッド (`Parse` と `TryParse`) があり、数字の文字列形式を数値型に変換するために使用できます。 これらのメソッドでは、[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md)と[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)で記述されている書式指定文字列を使用して、生成された文字列を解析できます。 既定では、`Parse` と `TryParse` メソッドは、10 進数の整数を含む文字列を整数値のみに正常に変換することができます。 これらのメソッドは、整数部と小数部、グループ区切り、および小数点記号を含む文字列を浮動小数点値に正常に変換できます。 `TryParse` メソッドが `false` を返すのに対して、`Parse` メソッドは操作が失敗した場合に例外をスローします。 ## 解析と書式プロバイダー - 通常、数値の文字列形式はカルチャによって異なります。 通貨記号、グループ (または千単位) 区切り、および小数点記号などの数値文字列の要素は、カルチャによって大きく異なります。 暗黙的または明示的のいずれかの解析メソッドでは、これらのカルチャ固有のバリエーションを認識する書式プロバイダーを使用します。 呼び出しに書式設定プロバイダーが指定されていないかどうか、`Parse`または`TryParse`メソッドは、現在のスレッド カルチャに関連付けられている書式プロバイダー (、によって返されるオブジェクト、プロパティ) を使用します。 + 通常、数値の文字列形式はカルチャによって異なります。 通貨記号、グループ (または千単位) 区切り、および小数点記号などの数値文字列の要素は、カルチャによって大きく異なります。 暗黙的または明示的のいずれかの解析メソッドでは、これらのカルチャ固有のバリエーションを認識する書式プロバイダーを使用します。 書式プロバイダーが `Parse` または `TryParse` メソッドの呼び出しで指定されない場合、現在のスレッド カルチャ ( プロパティで返された オブジェクト) と関連付けられた書式プロバイダーが使用されます。 - 書式設定プロバイダーがによって表される、実装します。 このインターフェイスが 1 つのメンバーには、単一パラメーターを持つが、メソッド、書式設定する型を表すオブジェクト。 このメソッドは、書式情報を示すオブジェクトを返します。 .NET には、次の 2 つがサポートしている数値文字列を解析するための実装。 + 書式プロバイダーは、 実装によって示されます。 このインターフェイスには、1 つのメンバー ( メソッド) があり、その 1 つのパラメーターは、書式設定される型を示す オブジェクトです。 このメソッドは、書式情報を示すオブジェクトを返します。 .NET では、数値文字列を解析するために、次の 2 つの の実装をサポートします。 -- Aオブジェクトメソッドを返します、カルチャに固有の書式情報を提供するオブジェクト。 +- オブジェクト。その メソッドが、カルチャ固有の書式情報を提供する オブジェクトを返します。 -- Aオブジェクトメソッドでは、それ自体を返します。 +- オブジェクト。その メソッドがそれ自体を返します。 - 次の例の配列内の各文字列に変換しようとする、値。 最初に、英語 (米国) カルチャの規則を反映する書式プロバイダーを使用して、文字列を解析しようとします。 この操作をスローした場合、 、フランス語 (フランス) カルチャの規則を反映する書式プロバイダーを使用して文字列を解析しようとします。 + 次の例では、配列内の各文字列を 値に変換しようとします。 最初に、英語 (米国) カルチャの規則を反映する書式プロバイダーを使用して、文字列を解析しようとします。 この操作が をスローする場合、フランス語 (フランス) カルチャの規則を反映する書式プロバイダーを使用して、文字列を解析しようとしています。 [!code-csharp[Parsing.Numbers#1](../../../samples/snippets/csharp/VS_Snippets_CLR/parsing.numbers/cs/formatproviders1.cs#1)] [!code-vb[Parsing.Numbers#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/parsing.numbers/vb/formatproviders1.vb#1)] ## 解析と NumberStyles 値 - 解析操作を処理できるスタイル要素 (空白、桁区切り記号、桁区切り記号など) が定義されている、列挙値。 既定では、整数値を表す文字列を解析してを使用して、値、数字、先頭および末尾の空白文字、および先頭の符号を可能にします。 浮動小数点値を表す文字列を解析の組み合わせを使用して、値ですこの複合スタイルでは小数点以下桁数先頭と末尾の空白文字、先頭の符号、小数点区切り文字、グループと共に。区切り記号、および指数部です。 オーバー ロードを呼び出すことによって、`Parse`または`TryParse`型のパラメーターを含むメソッドと 1 つまたは複数設定フラグ、解析操作するため、文字列内に存在できるスタイル要素を制御することができます成功します。 + 解析操作が処理できるスタイル要素 (空白文字、グループ区切り、小数点の記号など) は、 列挙値によって定義されます。 既定では、整数値を表す文字列は、 値を使用して解析されます。これは、数値、先頭と末尾の空白、および先頭の符号のみを許可します。 浮動小数点値を表す文字列は、 値と 値の組み合わせを使用して解析されます。この複合スタイルは、先頭と末尾の空白、先頭の符号、小数点記号、グループ区切り、および指数と共に 10 進数を許可します。 型のパラメーターを含む、`Parse` または `TryParse` メソッドのオーバーロードを呼び出し、1 つ以上の フラグを設定すると、解析操作が成功するように、文字列で示すことができるスタイル要素を制御することができます。 - 桁区切り記号を表す文字列を変換できないなど、値を使用して、メソッドです。 ただし、変換に使用する場合が成功すると、フラグ、次の例に示すようにします。 + たとえば、グループ区切りを含む文字列は、 メソッドを使用して、 値に変換することはできません。 ただし、次の例に示すように、 フラグを使用した場合、この変換は成功します。 [!code-csharp[Parsing.Numbers#2](../../../samples/snippets/csharp/VS_Snippets_CLR/parsing.numbers/cs/styles1.cs#2)] [!code-vb[Parsing.Numbers#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/parsing.numbers/vb/styles1.vb#2)] > [!WARNING] -> 解析操作は、常に特定のカルチャの書式規則を使用します。 渡すことによって、カルチャを指定しない場合、またはオブジェクトの現在のスレッドに関連付けられているカルチャが使用されます。 +> 解析操作は、常に特定のカルチャの書式規則を使用します。 または オブジェクトを渡してカルチャを指定しない場合、現在のスレッドに関連付けられているカルチャが使用されます。 - 次の表のメンバー、列挙型、解析処理に与える影響について説明します。 + 次の表では、 列挙体のメンバーを一覧し、そのメンバーが解析操作に与える影響について説明します。 |NumberStyles 値|解析する文字列への影響| |------------------------|---------------------------------------| ||数字のみが許可されます。| -||小数点の記号と桁数が許可されます。 整数値の場合、0 のみが小数点の桁数として許可されます。 有効な 10 進区切り記号はによって決定されます、またはプロパティです。| -||"e" または "E" の文字は、指数表記を示すために使用できます。 参照してくださいの詳細。| +||小数点の記号と桁数が許可されます。 整数値の場合、0 のみが小数点の桁数として許可されます。 有効な小数点は または パラメーターによって決定されます。| +||"e" または "E" の文字は、指数表記を示すために使用できます。 詳細については、「」を参照してください。| ||先頭の空白が許可されます。| ||末尾の空白が許可されます。| ||正または負の符号には、数字の先頭に追加できます。| ||正または負の符号は、数字の後に続けることができます。| ||かっこは、負の符号を示すために使用できます。| -||グループ区切りが許可されます。 桁区切り記号の文字はによって決まります、またはプロパティです。| -||通貨記号が許可されます。 通貨記号がによって定義された、プロパティです。| +||グループ区切りが許可されます。 グループ区切りの文字は、 または プロパティによって決定されます。| +||通貨記号が許可されます。 通貨記号は プロパティによって決定されます。| ||解析する文字列は、16 進数として解釈されます。 これには、16 進数の値の 0 ~ 9、A ~ F、a ~ f を含めることができます。 このフラグは、整数値を解析するためにだけに使用できます。| - さらに、列挙型が複数を含む次の複合スタイルを示します。フラグ。 + さらに、 列挙体は、複数の フラグを含む、次の複合スタイルを指定します。 |複合 NumberStyles 値|数値を含む| |----------------------------------|----------------------| -||含まれています、 、およびスタイル。 これは、整数値を解析するために使用される既定のスタイルです。| -||含まれています、 、およびスタイル。| -||含まれています、 、およびスタイル。| -||除くすべてのスタイルが含まれていますです。| -||除くすべてのスタイルが含まれていますです。| -||含まれています、 、およびスタイル。| +|| スタイルが含まれます。 これは、整数値を解析するために使用される既定のスタイルです。| +|| スタイルが含まれます。| +|| スタイルが含まれます。| +|| を除くすべてのスタイルが含まれます。| +|| を除くすべてのスタイルが含まれます。| +|| スタイルが含まれます。| ## 解析と Unicode 数字 - Unicode 標準では、さまざまな書記体系で数字のコード ポイントを定義します。 たとえば、U+0030 ~ U+0039 のコード ポイントは、0 ~ 9 の基本ラテンの数字を示し、U+09E6 ~ U+09EF のコード ポイントは、0 ~ 9 の数字のバングラ語の数字を示し、U+FF10 ~ U+FF19 のコード ポイントは、0 ~ 9 の全角の数字を示します。 ただし、解析メソッドで認識される数字は、U+0030 ~ U+0039 のコード ポイントの基本ラテンの数字 0 ~ 9 のみです。 [解析方法] の数値の文字列が渡された場合、その他の数字を格納している、メソッドをスロー、です。 + Unicode 標準では、さまざまな書記体系で数字のコード ポイントを定義します。 たとえば、U+0030 ~ U+0039 のコード ポイントは、0 ~ 9 の基本ラテンの数字を示し、U+09E6 ~ U+09EF のコード ポイントは、0 ~ 9 の数字のバングラ語の数字を示し、U+FF10 ~ U+FF19 のコード ポイントは、0 ~ 9 の全角の数字を示します。 ただし、解析メソッドで認識される数字は、U+0030 ~ U+0039 のコード ポイントの基本ラテンの数字 0 ~ 9 のみです。 数値解析メソッドがその他の数字を含む文字列を渡す場合、メソッドは をスローします。 - 次の例では、書記体系が異なるの桁の数字で構成される文字列を解析します。 例の出力に示されているように、基本ラテンの数字を解析する試行は成功しますが、全角、アラビア インド、バングラ語の数字を解析する試行は失敗します。 + 次の例では、 メソッドを使用して、異なる書記体系の数字で構成される文字列を解析します。 例の出力に示されているように、基本ラテンの数字を解析する試行は成功しますが、全角、アラビア インド、バングラ語の数字を解析する試行は失敗します。 [!code-csharp[Parsing.Numbers#3](../../../samples/snippets/csharp/VS_Snippets_CLR/parsing.numbers/cs/unicode1.cs#3)] [!code-vb[Parsing.Numbers#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/parsing.numbers/vb/unicode1.vb#3)] -## 関連項目 +## 参照 - [文字列の解析](../../../docs/standard/base-types/parsing-strings.md) + [Parsing Strings](../../../docs/standard/base-types/parsing-strings.md) [型の書式設定](../../../docs/standard/base-types/formatting-types.md) diff --git a/docs/standard/base-types/parsing-other.md b/docs/standard/base-types/parsing-other.md index e2c9c658526..0660d619848 100644 --- a/docs/standard/base-types/parsing-other.md +++ b/docs/standard/base-types/parsing-other.md @@ -1,5 +1,5 @@ --- -title: ".NET の他の文字列の解析" +title: ".NET でのその他の文字列の解析" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -19,18 +19,21 @@ helpviewer_keywords: - parsing strings, other strings - Boolean data type, parsing strings ms.assetid: d139bc00-3c4e-4d78-ac9a-5c951b258d28 -caps.latest.revision: "15" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: edd48993f50ec8b91ba7941a682d7de9f22aa12e -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 714c361507a95fc5f45efbca79191b17e7917fba +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- -# .NET の他の文字列の解析 -数値だけでなく、 、文字列型を表す文字列も解析できるデータ型にします。 +# .NET でのその他の文字列の解析 +数値および 文字列だけでなく、 型を表す文字列をデータ型に解析することもできます。 ## Char **Char** データ型に関連付けられている静的解析メソッドは、1 つの文字を含む文字列をUnicode 値に変換するのに便利です。 次のコードの例では、文字列を Unicode 文字に解析します。 @@ -40,24 +43,24 @@ ms.lasthandoff: 11/21/2017 [!code-vb[Conceptual.String.Parse#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.parse/vb/parse.vb#2)] ## ブール型 - **ブール**データ型が含まれています、**解析**メソッドを実際にブール値を表す文字列を変換に使用できる**ブール**型です。 このメソッドは大文字と小文字を区別しません。また、"True" または "False" を含む文字列を正常に解析することができます。 **解析**メソッドに関連付けられている、**ブール**型は、空白文字で囲まれた文字列を解析もできます。 その他の文字列が渡された場合、がスローされます。 + **Boolean** データ型には、**Parse** メソッドが含まれ、Boolean 値を示す文字列を実際の **Boolean** 型に変換するために使用できます。 このメソッドは大文字と小文字を区別しません。また、"True" または "False" を含む文字列を正常に解析することができます。 **Boolean** 型に関連付けられる **Parse** メソッドは、空白で囲まれた文字列を解析することもできます。 その他の文字列が渡された場合、 がスローされます。 - 次のコード例では、**解析**ブール値を文字列に変換します。 + 次のコードの例では、**Parse** メソッドを使用して、文字列を Boolean 値に変換します。 [!code-cpp[Conceptual.String.Parse#3](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.parse/cpp/parse.cpp#3)] [!code-csharp[Conceptual.String.Parse#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.parse/cs/parse.cs#3)] [!code-vb[Conceptual.String.Parse#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.parse/vb/parse.vb#3)] ## 列挙 - 静的 **Parse** メソッドを使用して、列挙型を文字列の値に初期化できます。 このメソッドは、解析は、列挙型、文字列解析、および解析が大文字小文字を区別するかどうかどうかを示すブール型の省略可能なフラグを受け取ります。 解析している文字列は、コンマで区切られた複数の値を含めることができます。これは、1 つ以上の空の領域 (空白とも呼ばれます) が前後にある場合があります。 文字列に複数の値がある場合、返されたオブジェクトの値は、ビット演算 OR 演算と組み合わされたすべての指定された値の値です。 + 静的 **Parse** メソッドを使用して、列挙型を文字列の値に初期化できます。 このメソッドでは、解析している列挙型、解析する文字列、および解析が大文字小文字を区別するかどうかを示す省略可能な Boolean フラグを受け入れます。 解析している文字列は、コンマで区切られた複数の値を含めることができます。これは、1 つ以上の空の領域 (空白とも呼ばれます) が前後にある場合があります。 文字列に複数の値がある場合、返されたオブジェクトの値は、ビット演算 OR 演算と組み合わされたすべての指定された値の値です。 - 次の例では、**解析**列挙値を文字列形式に変換します。 列挙体に初期化**木曜日**文字列からです。 + 次の例では、**Parse** メソッドを使用して、文字列形式を列挙値に変換します。 列挙体は、文字列から **Thursday** に初期化されます。 [!code-cpp[Conceptual.String.Parse#4](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.parse/cpp/parse.cpp#4)] [!code-csharp[Conceptual.String.Parse#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.parse/cs/parse.cs#4)] [!code-vb[Conceptual.String.Parse#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.parse/vb/parse.vb#4)] -## 関連項目 - [文字列の解析](../../../docs/standard/base-types/parsing-strings.md) +## 参照 + [Parsing Strings](../../../docs/standard/base-types/parsing-strings.md) [型の書式設定](../../../docs/standard/base-types/formatting-types.md) - [.NET における型変換](../../../docs/standard/base-types/type-conversion.md) + [.NET での型変換](../../../docs/standard/base-types/type-conversion.md) diff --git a/docs/standard/base-types/parsing-strings.md b/docs/standard/base-types/parsing-strings.md index 18f21f6bff7..7647f8480e3 100644 --- a/docs/standard/base-types/parsing-strings.md +++ b/docs/standard/base-types/parsing-strings.md @@ -1,5 +1,5 @@ --- -title: ".NET における文字列の解析" +title: ".NET での文字列の解析" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -15,35 +15,38 @@ helpviewer_keywords: - Parse method - parsing strings ms.assetid: 5e758b41-db93-456b-8999-99b7304b090d -caps.latest.revision: "10" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 811db42e04e73d7acbc03e303297b19fdf643384 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 9c2193dd1b1f3c0478efb5fc9c2b80250ef1878f +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- -# .NET における文字列の解析 -解析操作では、.NET の基本データ型を表す文字列をその基本データ型に変換します。 たとえば解析操作は、文字列を浮動小数点数や日付と時刻の値に変換するために使用します。 解析操作を実行するには、`Parse` メソッドがよく使用されます。 解析は書式設定の逆の操作 (基本データ型のその文字列形式への変換を含む) であるため、多くの同じ規則が適用されます。 実装するオブジェクトを使用して書式設定と同様、インターフェイスを実装するオブジェクトの使用の解析もカルチャの書式情報を提供する、文字列表現を解釈する方法を決定するインターフェイス. 詳細については、次を参照してください。[型の書式設定](../../../docs/standard/base-types/formatting-types.md)です。 +# .NET での文字列の解析 +解析操作では、.NET の基本データ型を表す文字列をその基本データ型に変換します。 たとえば解析操作は、文字列を浮動小数点数や日付と時刻の値に変換するために使用します。 解析操作を実行するには、`Parse` メソッドがよく使用されます。 解析は書式設定の逆の操作 (基本データ型のその文字列形式への変換を含む) であるため、多くの同じ規則が適用されます。 カルチャに依存する書式情報を指定するために、書式設定で インターフェイスを実装するオブジェクトを使用するのと同じように、解析でも インターフェイスを実装するオブジェクトを使用し、文字列形式を解釈する方法を決定します。 詳細については、[型の書式設定](../../../docs/standard/base-types/formatting-types.md)に関するページをご覧ください。 ## このセクションの内容 [数値文字列の解析](../../../docs/standard/base-types/parsing-numeric.md) - 文字列を .NET 型の数値に変換する方法について説明します。 + 文字列を .NET 数値型に変換する方法について説明します。 [日付と時刻文字列の解析](../../../docs/standard/base-types/parsing-datetime.md) - 文字列を .NET に変換する方法について説明**DateTime**型です。 + 文字列を .NET **DateTime** 型に変換する方法について説明します。 [その他の文字列の解析](../../../docs/standard/base-types/parsing-other.md) - 文字列に変換する方法について説明します**Char**、**ブール**、および**Enum**型です。 + 文字列を **Char** 型、**Boolean** 型、**Enum** 型に変換する方法について説明します。 ## 関連項目 [型の書式設定](../../../docs/standard/base-types/formatting-types.md) - 書式指定子と書式プロバイダーのような基本的な書式の概念について説明します。 + 書式指定子や書式プロバイダーなどの基本書式の概念について説明します。 [.NET での型変換](../../../docs/standard/base-types/type-conversion.md) - 型に変換する方法をについて説明します。 + 型に変換する方法について説明します。 [基本データ型](../../../docs/standard/base-types/index.md) - .NET の基本型で実行できる一般的な操作をについて説明します。 + .NET の基本型で実行できる一般的な操作について説明します。 diff --git a/docs/standard/base-types/performing-formatting-operations.md b/docs/standard/base-types/performing-formatting-operations.md index 73fb19d15fd..7d9050fe8cd 100644 --- a/docs/standard/base-types/performing-formatting-operations.md +++ b/docs/standard/base-types/performing-formatting-operations.md @@ -16,15 +16,18 @@ helpviewer_keywords: - formatting strings [.NET Framework], how-to topics - strings [.NET Framework], formatting ms.assetid: 36e7e096-4e6c-4cf2-9ab6-68073026ea0e -caps.latest.revision: "7" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 8f09232080bb5c9aae4902dfc33b638bde82474c -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a78c1caac318a19028472a2e4f6e8964f99abfba +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 書式設定操作の実行 次のトピックで、特定の書式設定操作を行うための手順を説明します。 @@ -35,7 +38,7 @@ ms.lasthandoff: 10/18/2017 - [方法: Web コントロールでの数値のユーザー入力を数値に変換する](../../../docs/standard/base-types/how-to-convert-numeric-user-input-in-web-controls-to-numbers.md) -- [方法: 特定の日付からの週の曜日の抽出](../../../docs/standard/base-types/how-to-extract-the-day-of-the-week-from-a-specific-date.md)です。 +- [方法: 特定の日付から曜日を抽出する](../../../docs/standard/base-types/how-to-extract-the-day-of-the-week-from-a-specific-date.md) - [方法: 日付と時刻の値をラウンドトリップさせる](../../../docs/standard/base-types/how-to-round-trip-date-and-time-values.md) @@ -45,5 +48,5 @@ ms.lasthandoff: 10/18/2017 - [方法: グレゴリオ暦以外の暦の日付を表示する](../../../docs/standard/base-types/how-to-display-dates-in-non-gregorian-calendars.md) -## 関連項目 +## 参照 [型の書式設定](../../../docs/standard/base-types/formatting-types.md) diff --git a/docs/standard/base-types/regular-expression-language-quick-reference.md b/docs/standard/base-types/regular-expression-language-quick-reference.md index d0a6b765c06..2ef07d85163 100644 --- a/docs/standard/base-types/regular-expression-language-quick-reference.md +++ b/docs/standard/base-types/regular-expression-language-quick-reference.md @@ -8,7 +8,8 @@ ms.suite: ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article -f1_keywords: VS.RegularExpressionBuilder +f1_keywords: +- VS.RegularExpressionBuilder helpviewer_keywords: - regex cheat sheet - parsing text with regular expressions, language elements @@ -19,18 +20,21 @@ helpviewer_keywords: - cheat sheet - .NET Framework regular expressions, language elements ms.assetid: 930653a6-95d2-4697-9d5a-52d11bb6fd4c -caps.latest.revision: "56" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: ab77293796eb20b1056f57f64903beb9357a80c5 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a0fed14784327c6fe16f083a22471b56032b6b5d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 正規表現言語 - クイック リファレンス - 正規表現とは、入力テキスト内で正規表現エンジンによる照合が試行されるパターンです。 パターンは、1 個以上の文字リテラル、演算子、または構成体で構成されます。 簡単な概要については、次を参照してください。 [.NET 正規表現](../../../docs/standard/base-types/regular-expressions.md)です。 + 正規表現とは、入力テキスト内で正規表現エンジンによる照合が試行されるパターンです。 パターンは、1 個以上の文字リテラル、演算子、または構成体で構成されます。 簡単な概要については、「[.NET の正規表現](../../../docs/standard/base-types/regular-expressions.md)」を参照してください。 このクイック リファレンスの各セクションでは、正規表現の定義に使用できる特定カテゴリの文字、演算子、および構成体を一覧表示します。 @@ -68,7 +72,7 @@ ms.lasthandoff: 11/21/2017 |`\x` *nn*|16 進数表現で文字を指定します (*nn* は 2 桁で構成されます)。|`\w\x20\w`|"a bc d" の

"a b"、"c d"| |`\c` *X*

`\c` *x*|*X* または *x*で指定された ASCII の制御文字と一致します。 *X* または *x* は制御文字です。|`\cC`|"\x0003" (Ctrl-C) の "\x0003"| |`\u` *nnnn*|16 進数形式で表される Unicode 文字 ( *nnnn*で表される 4 桁の数字) と一致します。|`\w\u0020\w`|"a bc d" の

"a b"、"c d"| -|`\`|このトピック内の表に示されているエスケープ文字として認識されない文字が後ろに付いている場合は、その文字と一致します。 たとえば、 `\*` は `\x2A`と同じであり、 `\.` は `\x2E`と同じです。 これにより、正規表現エンジンは言語要素を区別するために (など\*または?) と文字リテラル (によって表される`\*`または`\?`)。|`\d+[\+-x\*]\d+`|「2 + 2」および"3\*"の""(2+2) \* 3\*9"| +|`\`|このトピック内の表に示されているエスケープ文字として認識されない文字が後ろに付いている場合は、その文字と一致します。 たとえば、 `\*` は `\x2A`と同じであり、 `\.` は `\x2E`と同じです。 これを使用すると、正規表現エンジンによって言語要素 (\* や ? など) と文字リテラル (`\*` や `\?` など) のあいまいさが解消されます。|`\d+[\+-x\*]\d+`|"(2+2) \* 3\*9" の "2+2" と "3\*9"| [ページのトップへ](#top) @@ -152,7 +156,7 @@ ms.lasthandoff: 11/21/2017 ## 前方参照構成体 - 前方参照を使用すると、以前に一致した部分式を、同じ正規表現内で引き続き識別できます。 次の表は、.NET の正規表現でサポートされている前方参照構成体を一覧表示します。 詳細については、「 [Backreference Constructs](backreference-constructs-in-regular-expressions.md)」を参照してください。 + 前方参照を使用すると、以前に一致した部分式を、同じ正規表現内で引き続き識別できます。 .NET の正規表現でサポートされている前方参照構成体を、次の表に示します。 詳細については、「 [Backreference Constructs](backreference-constructs-in-regular-expressions.md)」を参照してください。 |前方参照構成体|説明|パターン|一致件数| |-----------------------------|-----------------|-------------|-------------| @@ -214,7 +218,7 @@ ms.lasthandoff: 11/21/2017 ## その他の構成体 - その他の構成体は、正規表現パターンを変更するか、それに関する情報を指定します。 次の表は、.NET でサポートされるその他の構文を示します。 詳細については、「 [Miscellaneous Constructs](miscellaneous-constructs-in-regular-expressions.md)」を参照してください。 + その他の構成体は、正規表現パターンを変更するか、それに関する情報を指定します。 次の表に .NET でサポートされているその他の構成体を示します。 詳細については、「 [Miscellaneous Constructs](miscellaneous-constructs-in-regular-expressions.md)」を参照してください。 |構成体|定義|例| |---------------|----------------|-------------| @@ -222,7 +226,7 @@ ms.lasthandoff: 11/21/2017 |`(?#` *comment* `)`|インライン コメントです。 コメントは、最初の閉じかっこで終了します。|`\bA(?#Matches words starting with A)\w+\b`| |`#` [to end of line]|X モード コメントです。 コメントの先頭はエスケープされない `#` で、コメントは行末まで継続します。|`(?x)\bA\w+\b#Matches words starting with A`| -## 関連項目 +## 参照 [正規表現](regular-expressions.md) diff --git a/docs/standard/base-types/regular-expression-options.md b/docs/standard/base-types/regular-expression-options.md index 4cb500ef12d..542d4788a91 100644 --- a/docs/standard/base-types/regular-expression-options.md +++ b/docs/standard/base-types/regular-expression-options.md @@ -18,22 +18,25 @@ helpviewer_keywords: - inline option constructs - options parameter ms.assetid: c82dc689-7e82-4767-a18d-cd24ce5f05e9 -caps.latest.revision: "27" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 7bc068cc248e1ca8e1d3c64eaa4132682721e035 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a4a1513840d17f2e7b02acf821b5032eaac6e6fc +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 正規表現のオプション 正規表現パターンでの入力文字列とリテラル文字列の比較では、大文字と小文字が区別されます。正規表現パターンに含まれる空白は、リテラルの空白文字として解釈されます。正規表現で使用されるキャプチャ グループは、暗黙的に指定される場合と明示的に指定される場合があります。これらはすべて、正規表現の既定の動作です。 正規表現のオプションを指定することで、これらの正規表現の既定の動作とそのいくつかの側面を変更できます。 次の表に示す各オプションは、正規表現パターンの一部としてインラインで記述することも、 クラス コンストラクターまたは静的パターン一致メソッドに 列挙値として渡すこともできます。 |RegexOptions のメンバー|インライン文字|効果| |-------------------------|----------------------|------------| -||使用できません。|既定の動作を使用します。 詳細については、「[既定のオプション](#Default)」を参照してください。| +||使用できません|既定の動作を使用します。 詳細については、「[既定のオプション](#Default)」を参照してください。| ||`i`|大文字と小文字を区別しない一致を使用します。 詳細については、「[大文字と小文字を区別しない一致](#Case)」を参照してください。| ||`m`|複数行モードを使用します。`^` と `$` は、(入力文字列の先頭および末尾ではなく) 各行の先頭および末尾と一致します。 詳細については、「[複数行モード](#Multiline)」を参照してください。| ||`s`|単一行モードを使用します。このモードでは、ピリオド (.) は任意の 1 文字と一致します (`\n` を除くすべての文字の代用)。 詳細については、「[単一行モード](#Singleline)」を参照してください。| @@ -112,7 +115,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Conceptual.Regex.Language.Options#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/determine1.cs#20)] [!code-vb[Conceptual.Regex.Language.Options#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/determine1.vb#20)] - 次のセクションでは、.NET の正規表現でサポートされるオプションを一覧表示します。 + 以降のセクションでは、.NET の正規表現でサポートされているオプションについて説明します。 ## 既定のオプション @@ -214,7 +217,7 @@ ms.lasthandoff: 10/18/2017 この正規表現は、ドキュメントから文末がピリオド、感嘆符、または疑問符である文を抽出することのみを目的とし、結果の文 ( オブジェクトで表される) のみを対象としています。 コレクション内の個々の単語は対象ではありません。 - 正規表現エンジンで コレクション オブジェクトと コレクション オブジェクトの両方を設定する必要があるので、キャプチャ グループが以後、使用されない場合は、この設定の処理が無駄になる可能性があります。 別の方法として、いずれかを使用できる、オプションまたは`n`インライン オプションのみが有効なキャプチャが明示的に名前または番号で指定されることを指定する、 `(?<`*名前*`>`*subexpression* `)`を構築します。 + 正規表現エンジンで コレクション オブジェクトと コレクション オブジェクトの両方を設定する必要があるので、キャプチャ グループが以後、使用されない場合は、この設定の処理が無駄になる可能性があります。 別の方法としては、 オプションまたは `n` インライン オプションを使用して、`(?<`*name*`>` *subexpression*`)` 構成体によって指定された明示的な名前または番号付きのグループのみを有効なキャプチャ対象として指定する方法が挙げられます。 次の例は、`\b\(?((\w+),?\s?)+[\.!?]\)?` 正規表現パターンによって返された一致に関する情報を示しています ( メソッドが オプションを使用して呼び出された場合、および使用せずに呼び出された場合)。 最初のメソッド呼び出しの出力結果が示すように、正規表現エンジンでは、キャプチャした部分文字列に関する情報に基づいて、 コレクション オブジェクトおよび コレクション オブジェクトが完全に設定されています。 2 番目のメソッドは、`options` を に設定して呼び出されているので、グループに関する情報をキャプチャしません。 @@ -282,11 +285,11 @@ ms.lasthandoff: 10/18/2017 - 文字クラス内の空白は常に、空白として解釈されます。 たとえば、正規表現パターン `[ .,;:]` は、空白文字、ピリオド、コンマ、セミコロン、またはコロンの任意の 1 文字と一致します。 -- 空白文字が許可されていない、かっこで囲まれた量指定子内でなど`{` *n* `}`、 `{` *n* `,}`、および`{` *n* `,` *m*`}`です。 たとえば、正規表現パターン `\d{1. 3}` は、空白文字が含まれているため、1 ~ 3 桁の数値のどのシーケンスにも一致しません。 +- かっこで囲まれた量指定子 (`{`*n*`}`、`{`*n*`,}`、`{`*n*`,`*m*`}` など) には空白を使用できません。 たとえば、正規表現パターン `\d{1. 3}` は、空白文字が含まれているため、1 ~ 3 桁の数値のどのシーケンスにも一致しません。 - 言語要素を導入する文字シーケンス内では空白を使用できません。 例: - - 言語要素 `(?:`*subexpression*`)` は非キャプチャ グループを表し、要素の `(?:` 部分には空白を埋め込むことはできません。 パターン`(? :` *subexpression* `)`スロー、実行時に、パターン、および、パターン、正規表現エンジンで解析できないため`( ?:`*部分式* `)`一致に失敗した*subexpression*です。 + - 言語要素 `(?:`*subexpression*`)` は非キャプチャ グループを表し、要素の `(?:` 部分には空白を埋め込むことはできません。 パターン `(? :`*subexpression*`)` は、正規表現エンジンで解析できないため実行時に をスローします。パターン `( ?:`*subexpression*`)` は *subexpression* に一致しません。 - Unicode カテゴリまたは名前付きブロックを表す言語要素 `\p{`*name*`}` の `\p{` 部分には、空白を埋め込むことはできません。 空白を追加すると、この要素は実行時に をスローします。 @@ -296,7 +299,7 @@ ms.lasthandoff: 10/18/2017 `\b \(? ( (?>\w+) ,?\s? )+ [\.!?] \)? # Matches an entire sentence.` - このパターンで定義されたパターンに似ています、[明示的なキャプチャのみ](#Explicit)セクションで、使用する点を除いて、パターンの空白を無視するオプションです。 + このパターンは、「[明示的なキャプチャのみ](#Explicit)」セクションで定義したパターンと似ています。ただし、 オプションを使用して、パターンの空白を無視している点が異なります。 [!code-csharp[Conceptual.Regex.Language.Options#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/whitespace1.cs#12)] [!code-vb[Conceptual.Regex.Language.Options#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/whitespace1.vb#12)] @@ -401,5 +404,5 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Conceptual.Regex.Language.Options#15](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/culture1.cs#15)] [!code-vb[Conceptual.Regex.Language.Options#15](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/culture1.vb#15)] -## 関連項目 +## 参照 [正規表現言語 - クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) diff --git a/docs/standard/base-types/regular-expressions.md b/docs/standard/base-types/regular-expressions.md index 94b3ba0611c..755e517dc9f 100644 --- a/docs/standard/base-types/regular-expressions.md +++ b/docs/standard/base-types/regular-expressions.md @@ -26,21 +26,24 @@ helpviewer_keywords: - .NET Framework regular expressions - strings [.NET Framework], regular expressions ms.assetid: 521b3f6d-f869-42e1-93e5-158c54a6895d -caps.latest.revision: "24" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: cb612d524f32eb4a97ac358d6deb8d2889ee5391 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 145e0c9a722afd9f49216058604936189c003f17 +ms.sourcegitcommit: cf22b29db780e532e1090c6e755aa52d28273fa6 ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 02/01/2018 --- # .NET の正規表現 -正規表現を使用すると、強力、柔軟、そして効率的な方法でテキストを処理できます。 正規表現の広範なパターン一致表記法を使用することで、大量のテキストをすばやく解析して特定の文字パターンを検索したり、決められたパターン (電子メール アドレスなど) と照らしてテキストを検証したりできるほか、テキストの部分文字列を抽出、編集、置換、または削除したり、抽出した文字列をコレクションに追加してレポートを生成したりすることもできます。 文字列処理や大量のテキストを解析する多くのアプリケーションにとって、正規表現は欠くことのできないツールです。 +正規表現を使用すると、強力、柔軟、そして効率的な方法でテキストを処理できます。 正規表現の広範なパターン一致表記法を使用することで、大量のテキストをすばやく解析して特定の文字パターンを検索したり、決められたパターン (メール アドレスなど) と照らしてテキストを検証したりできるほか、テキストの部分文字列を抽出、編集、置換、または削除したり、抽出した文字列をコレクションに追加してレポートを生成したりすることもできます。 文字列処理や大量のテキストを解析する多くのアプリケーションにとって、正規表現は欠くことのできないツールです。 ## 正規表現の動作 - 正規表現を使ったテキスト処理の中心的な場所は、正規表現エンジンによって表される、 .NET でのオブジェクト。 正規表現を使ったテキスト処理では、正規表現エンジンに対し、最低でも次の 2 つの情報を与える必要があります。 + 正規表現を使ったテキスト処理の最も重要な部分は、.NET の オブジェクトによって表される正規表現エンジンです。 正規表現を使ったテキスト処理では、正規表現エンジンに対し、最低でも次の 2 つの情報を与える必要があります。 - テキストを識別する正規表現パターン。 @@ -50,18 +53,18 @@ ms.lasthandoff: 11/21/2017 クラスのメソッドを使用すると、次のような処理を実行できます。 -- 入力されたテキストに特定の正規表現パターンが出現するかどうかを調べるには、 メソッドを呼び出します。 使用する例については、 、テキストを検証するためのメソッドを参照してください[する方法: 文字列が有効な電子メール形式であることを確認](../../../docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md)です。 +- 入力されたテキストに特定の正規表現パターンが出現するかどうかを調べるには、 メソッドを呼び出します。 テキストを検証するために メソッドを使う例については、「[方法 : 文字列が有効な電子メール形式であるかどうかを検証する](../../../docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md)」をご覧ください。 - 正規表現パターンと一致したテキストを 1 つまたは全部取得するには、 メソッドまたは メソッドを呼び出します。 前者は、一致したテキストの情報を保持する オブジェクトを返します。 後者は、解析対象のテキストに見つかった各一致につき 1 つの オブジェクトを含む オブジェクトを返します。 -- 正規表現パターンと一致したテキストを置換するには、 メソッドを呼び出します。 使用する例について、日付形式を変更し、文字列から無効な文字を削除する方法を確認する[する方法: 文字列から無効な文字をストリップ](../../../docs/standard/base-types/how-to-strip-invalid-characters-from-a-string.md)と[例:日付形式を変更する](../../../docs/standard/base-types/regular-expression-example-changing-date-formats.md). +- 正規表現パターンと一致したテキストを置換するには、 メソッドを呼び出します。 メソッドを使って日付形式を変更したり文字列から無効な文字を削除したりする例については、「[方法: 文字列から無効な文字を取り除く](../../../docs/standard/base-types/how-to-strip-invalid-characters-from-a-string.md)」および「[例: 日付形式の変更](../../../docs/standard/base-types/regular-expression-example-changing-date-formats.md)」をご覧ください。 正規表現のオブジェクト モデルの概要については、「[正規表現のオブジェクト モデル](../../../docs/standard/base-types/the-regular-expression-object-model.md)」をご覧ください。 - 正規表現言語の詳細については、次を参照してください。[正規表現言語 - クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md)またはダウンロードして、次の資料のいずれかを印刷します。 + 正規表現の言語について詳しくは、「[正規表現言語 - クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md)」を参照するか、次の資料のいずれかをダウンロードして印刷してください。 - [Word (.docx) 形式でのクイック リファレンス](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.docx) - [PDF (.pdf) 形式でのクイック リファレンス](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.pdf) + [Word (.docx) 形式のクイック リファレンス](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.docx) + [PDF (.pdf) 形式のクイック リファレンス](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.pdf) ## 正規表現の例 クラスには、文字列内のリテラル文字列を検索する際に使用できる文字列の検索メソッドと置換メソッドが数多く含まれています。 正規表現は、次の例に示すように、文字列内の部分文字列のいずれかを検索する場合、または文字列内のパターンを識別する場合に最も役立ちます。 @@ -72,7 +75,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.Regex#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex/cs/example1.cs#2)] [!code-vb[Conceptual.Regex#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex/vb/example1.vb#2)] - 正規表現パターン`(Mr\.? |Mrs\.? |Miss |Ms\.? )`"Mr"、「mr.」、"Mrs"、「mrs.」、"Miss"、"Ms または"Ms."の任意の項目を検索します。 メソッドを呼び出すと、一致する文字列が に置き換えられます。つまり、元の文字列から削除されます。 + 正規表現パターン `(Mr\.? |Mrs\.? |Miss |Ms\.? )` は、"Mr "、"Mr. "、"Mrs "、"Mrs. "、"Miss "、"Ms"、または "Ms. " の出現と一致します。 メソッドを呼び出すと、一致する文字列が に置き換えられます。つまり、元の文字列から削除されます。 ### 例 2: 重複する単語の識別 記述者が単語を誤って重複入力するというエラーがよくあります。 次の例に示すように、正規表現を使用して重複する単語を識別できます。 @@ -118,11 +121,11 @@ ms.lasthandoff: 11/21/2017 ## 関連トピック -|タイトル|説明| +|Title|説明| |-----------|-----------------| |[正規表現言語 - クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md)|正規表現を定義するために使う一連の文字、演算子、および構成体について説明します。| |[正規表現のオブジェクト モデル](../../../docs/standard/base-types/the-regular-expression-object-model.md)|正規表現クラスの使用方法について詳しく説明し、コード例を示します。| -|[正規表現の動作の詳細](../../../docs/standard/base-types/details-of-regular-expression-behavior.md)|.NET の正規表現の動作と機能についてを説明します。| +|[正規表現の動作の詳細](../../../docs/standard/base-types/details-of-regular-expression-behavior.md)|.NET の正規表現の機能と動作について説明します。| |[正規表現の例](../../../docs/standard/base-types/regular-expression-examples.md)|正規表現の一般的な使用方法を示すコード例が用意されています。| ## 参照 diff --git a/docs/standard/base-types/standard-date-and-time-format-strings.md b/docs/standard/base-types/standard-date-and-time-format-strings.md index cfa26e9519b..12a732991ca 100644 --- a/docs/standard/base-types/standard-date-and-time-format-strings.md +++ b/docs/standard/base-types/standard-date-and-time-format-strings.md @@ -20,15 +20,18 @@ helpviewer_keywords: - formatting [.NET Framework], time - date and time strings ms.assetid: bb79761a-ca08-44ee-b142-b06b3e2fc22b -caps.latest.revision: "92" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: ca51c13a8c25575080c56b8d1ffe5723f34b539e -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 55f8f6b544a3ade0ad9423e8253cc44e0fb5fec1 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 標準の日時書式指定文字列 標準の日時書式指定文字列は、単一の書式指定子を使用して日付と時刻の値のテキスト表現を定義します。 空白を含む複数の文字で構成される日時書式指定文字列は、カスタム日時書式指定文字列として解釈されます。詳細については、「[カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)」をご覧ください。 標準またはカスタムの書式指定文字列には、次の 2 とおりの使用方法があります。 @@ -44,7 +47,7 @@ ms.lasthandoff: 11/21/2017 標準日時書式指定子を次の表に示します。 特に明記されない限り、特定の標準日時書式指定子は、 値で使用しても、 値で使用してもまったく同じ文字列形式を生成します。 標準の日時書式指定文字列の使用方法については、「[メモ](#Notes)」をご覧ください。 -|書式指定子|説明|例| +|書式指定子|説明|使用例| |----------------------|-----------------|--------------| |"d"|短い形式の日付パターン。

詳細については、「[短い形式の日付 ("d") 書式指定子](#ShortDate)」を参照してください。|2009-06-15T13:45:30 -> 6/15/2009 (en-US)

2009-06-15T13:45:30 -> 15/06/2009 (fr-FR)

2009-06-15T13:45:30 -> 2009/06/15 (ja-JP)| |"D"|長い形式の日付パターン。

詳細については、「[長い形式の日付 ("D") 書式指定子](#LongDate)」を参照してください。|2009-06-15T13:45:30 -> Monday, June 15, 2009 (en-US)

2009-06-15T13:45:30 -> 15 июня 2009 г. (ru-RU)

2009-06-15T13:45:30 -> Montag, 15. Juni 2009 (de-DE)| @@ -58,7 +61,7 @@ ms.lasthandoff: 11/21/2017 |"s"|並べ替え可能な日付と時刻のパターン。

詳細については、「[並べ替え可能な日付と時刻 ("s") 書式指定子](#Sortable)」を参照してください。|2009-06-15T13:45:30 (DateTimeKind.Local) -> 2009-06-15T13:45:30

2009-06-15T13:45:30 (DateTimeKind.Utc) -> 2009-06-15T13:45:30| |"t"|短い形式の時刻パターン。

詳細については、「[短い形式の時刻 ("t") 書式指定子](#ShortTime)」を参照してください。|2009-06-15T13:45:30 -> 1:45 PM (en-US)

2009-06-15T13:45:30 -> 13:45 (hr-HR)

2009-06-15T13:45:30 -> 01:45 م (ar-EG)| |"T"|長い形式の時刻パターン。

詳細については、「[長い形式の時刻 ("T") 書式指定子](#LongTime)」を参照してください。|2009-06-15T13:45:30 -> 1:45:30 PM (en-US)

2009-06-15T13:45:30 -> 13:45:30 (hr-HR)

2009-06-15T13:45:30 -> 01:45:30 م (ar-EG)| -|"u"|並べ替え可能な日付と時刻のパターン (世界時刻)。

詳細については、「[世界共通の並べ替え可能な日付と時刻 ("u") 書式指定子](#UniversalSortable)」を参照してください。|値: 2009-06--> 2009-06-15 を 15T13:45:30 13:45:30Z

値: 2009-06--> 2009-06-15 を 15T13:45:30 20:45:30Z| +|"u"|並べ替え可能な日付と時刻のパターン (世界時刻)。

詳細については、「[世界共通の並べ替え可能な日付と時刻 ("u") 書式指定子](#UniversalSortable)」を参照してください。| 値の場合: 2009-06-15T13:45:30 -> 2009-06-15 13:45:30Z

値の場合: 2009-06-15T13:45:30 -> 2009-06-15 20:45:30Z| |"U"|完全な日付と時刻のパターン (世界時刻)。

詳細については、「[世界共通の完全な日付と時刻 ("U") 書式指定子](#UniversalFull)」を参照してください。|2009-06-15T13:45:30 -> Monday, June 15, 2009 8:45:30 PM (en-US)

2009-06-15T13:45:30 -> den 15 juni 2009 20:45:30 (sv-SE)

2009-06-15T13:45:30 -> Δευτέρα, 15 Ιουνίου 2009 8:45:30 μμ (el-GR)| |"Y"、"y"|年月パターン。

詳細については、「[年月 ("Y") 書式指定子](#YearMonth)」を参照してください。|2009-06-15T13:45:30 -> June, 2009 (en-US)

2009-06-15T13:45:30 -> juni 2009 (da-DK)

2009-06-15T13:45:30 -> Juni 2009 (id-ID)| |その他の 1 文字|未定義の指定子。|ランタイム をスローします。| @@ -252,7 +255,7 @@ ms.lasthandoff: 11/21/2017 "O" または "o" 標準書式指定子は、 値の "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" カスタム書式指定文字列と 値の "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz" カスタム書式指定文字列に対応します。 この文字列の中で、個々の文字 (ハイフン、コロン、アルファベットの "T" など) を区切る一対の単一引用符は、各文字がリテラルであって変更できないことを示します。 アポストロフィは、出力された文字列には現れません。 - 'O"または"o"標準書式指定子 (および"yyyy '-'MM'-'表記' HH': 'mm':'ss'.'ISO 8601 情報を表すタイム ゾーンを維持する 3 つの方法の fffffffK"カスタム書式指定文字列) を活用、プロパティ値。 + "O" または "o" 標準書式指定子 (および "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" カスタム書式指定文字列) は、 値の プロパティを保持するため、ISO 8601 の 3 種類のタイム ゾーン情報表記形式を利用します。 - 日時値のタイム ゾーン コンポーネントは、UTC からのオフセットです (例:+01:00、-07:00)。 のすべての値もこの形式で表記されます。 @@ -408,17 +411,17 @@ ms.lasthandoff: 11/21/2017 [表のトップへ](#table) -## ノート +## メモ ### コントロール パネルの設定 コントロール パネルの **[地域と言語のオプション]** での設定は、書式設定操作によって生成される結果の文字列に影響します。 これらの設定は、書式設定の制御に使用される値を提供する現在のスレッド カルチャに関連付けられた オブジェクトを初期化するために使用されます。 コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。 - また、使用する場合、新しいのインスタンスを作成するコンス トラクターを現在のシステム カルチャによって確立された任意のカスタマイズと同じカルチャを表すオブジェクト、**地域と言語のオプション**コントロール パネル では、新しいに適用されるオブジェクト。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 + また、 コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい オブジェクトをインスタンス化した場合、コントロール パネルの **[地域と言語のオプション]** 項目で設定されたカスタマイズが新しい オブジェクトに適用されます。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 ### DateTimeFormatInfo のプロパティ 書式設定は、現在の オブジェクトのプロパティの影響を受けます。このオブジェクトは、現在のスレッド カルチャによって暗黙的に指定されるか、または書式設定を実行するメソッドの パラメーターによって明示的に指定されます。 パラメーターには、カルチャを表す オブジェクトを指定するか、特定のカルチャの日時書式設定規則を表す オブジェクトを指定する必要があります。 標準日時書式指定子の多くは、現在の オブジェクトのプロパティによって定義されている書式設定パターンのエイリアスです。 標準日時書式指定子によって生成される結果は、対応する プロパティの、対応する日時形式パターンを変更することによって変えることができます。 -## 関連項目 +## 参照 [型の書式設定](../../../docs/standard/base-types/formatting-types.md) diff --git a/docs/standard/base-types/standard-numeric-format-strings.md b/docs/standard/base-types/standard-numeric-format-strings.md index 7c87236f63e..a5287c54bea 100644 --- a/docs/standard/base-types/standard-numeric-format-strings.md +++ b/docs/standard/base-types/standard-numeric-format-strings.md @@ -21,11 +21,14 @@ helpviewer_keywords: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 81547bbcdbae5b4cc8dc1f20e829dfb5ede08963 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 9416bff21607d8e37f9e7dbc270477539043fe8b +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 標準の数値書式指定文字列 一般的な数値型を書式設定するには、標準の数値書式指定文字列を使用します。 標準の数値書式指定文字列の形式は `Axx` です。 @@ -34,34 +37,34 @@ ms.lasthandoff: 11/21/2017 - `xx` は *精度指定子* です。これは省略可能な整数値です。 精度指定子は 0 ~ 99 の範囲で指定され、結果の桁数に影響します。 精度指定子は、文字列形式の数値の桁数を制御することに注意してください。 精度指定子では、数値を丸めません。 丸め操作を実行するには、、または の各メソッドを使用します。 - ときに*精度指定子*数を制御結果の文字列の小数部桁数は、結果文字列はゼロから離れる方向に丸められる数を反映して (使用して、 )。 + *精度指定子*が結果文字列内の小数部の桁数を制御する際、結果文字列は、ゼロから離れる方向に丸められる数を反映します (つまり、 を使用します)。 > [!NOTE] > 精度指定子は、結果文字列の桁数を決定します。 結果文字列に先頭または末尾のスペースを埋め込むには、[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)機能を使用して、書式指定項目に *alignment コンポーネント*を定義します。 -標準の数値書式指定文字列でサポートされます。 +標準の数値書式指定文字列は、以下をサポートしています。 -- 一部のオーバー ロード、`ToString`すべての数値型のメソッドです。 たとえば、数値書式指定文字列を指定できます、メソッドです。 +- 全数値型の `ToString` メソッドの一部のオーバーロード。 たとえば、 メソッドおよび メソッドに数値書式指定文字列を指定できます。 -- .NET[複合書式指定機能](../../../docs/standard/base-types/composite-formatting.md)、によって使用される`Write`と`WriteLine`のメソッド、、クラス、メソッド、およびメソッド。 複合書式指定機能により、複数のデータ項目の文字列表現を 1 つの文字列にまとめ、フィールド幅を指定し、フィールドの数値の位置を揃えることができます。 詳細については、「[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)」をご覧ください。 +- .NET の[複合書式指定機能](../../../docs/standard/base-types/composite-formatting.md)でもサポートされています。この機能を使用するメソッドには、 クラスおよび クラスの一部の `Write` メソッドと `WriteLine` メソッド、 メソッド、 メソッドがあります。 複合書式指定機能により、複数のデータ項目の文字列表現を 1 つの文字列にまとめ、フィールド幅を指定し、フィールドの数値の位置を揃えることができます。 詳細については、「[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)」をご覧ください。 -- [文字列の補間](../../csharp/language-reference/keywords/interpolated-strings.md)c# および Visual Basic の場合でを複合書式指定文字列と比較すると、簡略化された構文を提供します。 +- C# と Visual Basic の[補間文字列](../../csharp/language-reference/keywords/interpolated-strings.md)。複合書式指定文字列と比較すると、構文は単純です。 > [!TIP] > [書式指定ユーティリティ](http://code.msdn.microsoft.com/NET-Framework-4-Formatting-9c4dae8d)をダウンロードできます。このアプリケーションを使用すると、書式指定文字列を数値または日付と時刻の値に適用して、結果の文字列を表示できます。 次の表に、標準数値書式指定子の説明および書式指定子ごとのサンプル出力を示します。 標準の数値書式指定文字列の使用方法については、「[メモ](#NotesStandardFormatting)」をご覧ください。それらを使用する包括的な例については、「[例](#example)」をご覧ください。 -|書式指定子|名前|説明|例| +|書式指定子|name|説明|使用例| |----------------------|----------|-----------------|--------------| |"C" または "c"|通貨|結果: 通貨値。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: によって定義されます。

詳細については、「[通貨 ("C") 書式指定子](#CFormatString)」を参照してください。|123.456 ("C", en-US) -> $123.46

123.456 ("C", fr-FR) -> 123,46 €

123.456 ("C", ja-JP) -> ¥123

-123.456 ("C3", en-US) -> ($123.456)

-123.456 ("C3", fr-FR) -> -123,456 €

-123.456 ("C3", ja-JP) -> -¥123.456| |"D" または "d"|Decimal (10 進数型)|結果: 必要に応じて負の符号が付く整数。

サポート: 整数型のみ。

精度指定子: 最小桁数。

既定の精度指定子: 必要な最小桁数。

詳細については、「[10 進数 ("D") 書式指定子](#DFormatString)」を参照してください。|1234 ("D") -> 1234

-1234 ("D6") -> -001234| |"E" または "e"|指数|結果: 指数表記。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: 6。

詳細については、「[指数 ("E") 書式指定子](#EFormatString)」を参照してください。|1052.0329112756 ("E", en-US) -> 1.052033E+003

1052.0329112756 ("e", fr-FR) -> 1,052033e+003

-1052.0329112756 ("e2", en-US) -> -1.05e+003

-1052.0329112756 ("E2", fr_FR) -> -1,05E+003| |"F" または "f"|固定小数点|結果: 必要に応じて負の符号が付く整数と小数。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: によって定義されます。

詳細については、「[固定小数点 ("F") 書式指定子](#FFormatString)」を参照してください。|1234.567 ("F", en-US) -> 1234.57

1234.567 ("F", de-DE) -> 1234,57

1234 ("F1", en-US) -> 1234.0

1234 ("F1", de-DE) -> 1234,0

-1234.56 ("F4", en-US) -> -1234.5600

-1234.56 ("F4", de-DE) -> -1234,5600| |"G" または "g"|全般|結果: 固定小数点表記または指数表記のいずれかのより簡潔な形式。

サポート: すべての数値型。

精度指定子: 有効桁数。

既定の精度指定子: 数値型によって異なります。

詳細については、「[一般 ("G") 書式指定子](#GFormatString)」を参照してください。|-123.456 ("G", en-US) -> -123.456

-123.456 ("G", sv-SE) -> -123,456

123.4546 ("G4", en-US) -> 123.5

123.4546 ("G4", sv-SE) -> 123,5

-1.234567890e-25 ("G", en-US) -> -1.23456789E-25

-1.234567890e-25 ("G", sv-SE) -> -1,23456789E-25| -|"N" または "n"|Number|結果: 必要に応じて負の符号が付く整数と小数、桁区切り記号、および小数点記号。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: によって定義されます。

詳細については、「[数値 ("N") 書式指定子](#NFormatString)」を参照してください。|1234.567 ("N", en-US) -> 1,234.57

1234.567 ("N", ru-RU) -> 1 234,57

1234 ("N1", en-US) -> 1,234.0

1234 ("N1", ru-RU) -> 1 234,0

-1234.56 ("N3", en-US) -> -1,234.560

-1234.56 ("N3", ru-RU) -> -1 234,560| -|"P" または "p"|パーセント|結果: 数値に 100 を掛けて、パーセント記号を付けて表示します。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: によって定義されたです。

詳細については、「[パーセント ("P") 書式指定子](#PFormatString)」を参照してください。|1 ("P", en-US) -> 100.00 %

1 ("P", fr-FR) -> 100,00 %

-0.39678 ("P1", en-US) -> -39.7 %

-0.39678 ("P1", fr-FR) -> -39,7 %| -|"R" または "r"|ラウンドトリップ|結果: 同じ数値にラウンドトリップできる文字列。

サポート: 、および

注: 推奨、のみを入力します。 の種類、"G17"を使用して;の種類が"G9"を使用します。
精度指定子: 無視されます。

詳細については、「[ラウンドトリップ ("R") 書式指定子](#RFormatString)」を参照してください。|123456789.12345678 ("R") -> 123456789.12345678

-1234567890.12345678 ("R") -> -1234567890.1234567| +|"N" または "n"|数値|結果: 必要に応じて負の符号が付く整数と小数、桁区切り記号、および小数点記号。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: によって定義されます。

詳細については、「[数値 ("N") 書式指定子](#NFormatString)」を参照してください。|1234.567 ("N", en-US) -> 1,234.57

1234.567 ("N", ru-RU) -> 1 234,57

1234 ("N1", en-US) -> 1,234.0

1234 ("N1", ru-RU) -> 1 234,0

-1234.56 ("N3", en-US) -> -1,234.560

-1234.56 ("N3", ru-RU) -> -1 234,560| +|"P" または "p"|パーセント|結果: 数値に 100 を掛けて、パーセント記号を付けて表示します。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: によって定義されます。

詳細については、「[パーセント ("P") 書式指定子](#PFormatString)」を参照してください。|1 ("P", en-US) -> 100.00 %

1 ("P", fr-FR) -> 100,00 %

-0.39678 ("P1", en-US) -> -39.7 %

-0.39678 ("P1", fr-FR) -> -39,7 %| +|"R" または "r"|ラウンドトリップ|結果: 同じ数値にラウンドトリップできる文字列。

サポート: 、および

注: 型にのみお勧めします。 型の場合は "G17"、 型の場合は "G9" を使用します。
精度指定子: 無視されます。

詳細については、「[ラウンドトリップ ("R") 書式指定子](#RFormatString)」を参照してください。|123456789.12345678 ("R") -> 123456789.12345678

-1234567890.12345678 ("R") -> -1234567890.1234567| |"X" または "x"|16 進数|結果: 16 進数文字列。

サポート: 整数型のみ。

精度指定子: 結果文字列の桁数。

詳細については、「[16 進数 ("X") 書式指定子](#XFormatString)」を参照してください。|255 ("X") -> FF

-1 ("x") -> ff

255 ("x4") -> 00ff

-1 ("X4") -> 00FF| |その他の 1 文字|未定義の指定子|結果: 実行時に をスローします。|| @@ -69,19 +72,19 @@ ms.lasthandoff: 11/21/2017 ## 標準の数値書式指定文字列の使用 標準の数値書式指定文字列を使用すると、次のいずれかの方法で数値の書式を定義できます。 -- `ToString` パラメーターを持つ `format` メソッドのオーバーロードに渡す。 次の例では、(ここでは、EN-US カルチャ)、現在のカルチャの通貨文字列として数値を書式設定します。 +- `ToString` パラメーターを持つ `format` メソッドのオーバーロードに渡す。 次の例では、数値の書式を現在のカルチャ (ここでは en-US カルチャ) の通貨文字列に設定しています。 [!code-cpp[Formatting.Numeric.Standard#10](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/standardusage1.cpp#10)] [!code-csharp[Formatting.Numeric.Standard#10](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/standardusage1.cs#10)] [!code-vb[Formatting.Numeric.Standard#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/standardusage1.vb#10)] -- として指定できます、`formatString`などのメソッドで使用される書式指定項目で引数、およびです。 詳細については、「[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)」をご覧ください。 次の例では、書式指定項目を使用して文字列に通貨値を挿入しています。 +- などのメソッドで使用される書式指定項目の `formatString` 引数として渡す。 詳細については、「[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)」をご覧ください。 次の例では、書式指定項目を使用して文字列に通貨値を挿入しています。 [!code-cpp[Formatting.Numeric.Standard#11](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/standardusage1.cpp#11)] [!code-csharp[Formatting.Numeric.Standard#11](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/standardusage1.cs#11)] [!code-vb[Formatting.Numeric.Standard#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/standardusage1.vb#11)] - 必要に応じて、指定することができます、`alignment`数値フィールド、およびその値が右揃えまたは左揃えの幅を指定する引数。 次の例では、通貨の値が 28 文字フィールドでは左揃えになっており、14 文字フィールドでは右揃えになっています。 + オプションで、`alignment` 引数を渡して数値フィールドの幅と、その値を右揃えまたは左揃えにするかどうかを指定します。 次の例では、通貨の値が 28 文字フィールドでは左揃えになっており、14 文字フィールドでは右揃えになっています。 [!code-cpp[Formatting.Numeric.Standard#12](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/standardusage1.cpp#12)] [!code-csharp[Formatting.Numeric.Standard#12](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/standardusage1.cs#12)] @@ -101,7 +104,7 @@ ms.lasthandoff: 11/21/2017 |-------------------------------|-----------------| ||正の値の通貨記号の位置を定義します。| ||負の値の通貨記号の位置を定義し、かっこと プロパティのどちらによって負の符号が表されるかを指定します。| -||場合に使用される負符号を定義かっこを使用しないことを示します。| +|| でかっこを使用しないように示されている場合に使用される負の符号を定義します。| ||通貨記号を定義します。| ||通貨値の既定の小数点以下桁数を定義します。 この値は、精度指定子を使用してオーバーライドできます。| ||整数部と小数部を区切る文字列を定義します。| @@ -162,7 +165,7 @@ ms.lasthandoff: 11/21/2017 ## 固定小数点 ("F") 書式指定子 - 固定小数点 ("F") 書式指定子は、形式の文字列に数値を変換"-'-ddd.ddd...'" この "d" は 0 ~ 9 の 1 桁の数字を示します。 負の数値の場合、変換後の文字列の先頭にマイナス記号が挿入されます。 + 固定小数点 ("F") 書式指定子は、"-ddd.ddd…" という形式の文字列に数値を変換します。 この "d" は 0 ~ 9 の 1 桁の数字を示します。 負の数値の場合、変換後の文字列の先頭にマイナス記号が挿入されます。 精度指定子は、小数部の桁数を示します。 精度指定子を省略すると、現在の プロパティによって桁数が指定されます。 @@ -204,12 +207,12 @@ ms.lasthandoff: 11/21/2017 指数表記が使用される場合、結果の指数部には、書式指定子が "G" のときには "E"、書式指定子が "g" のときには "e" というプレフィックスが付きます。 指数部には少なくとも 2 桁が含まれます。 これは、指数部に少なくとも 3 桁が含まれる、指数書式指定子によって生成される指数表記の書式とは異なります。 -なおで使用する場合、値、"G17"書式指定子により、元の値のラウンドト リップでは正常にします。 これは、ためは、IEEE 754 2008 準拠倍精度 (`binary64`) 浮動小数点数の最大 17 桁の精度を提供します。 代わりに、使用することをお勧め、 ["R"書式指定子](#RFormatString)ラウンドト リップに成功の倍精度浮動小数点値に、場合によっては"R"が失敗したため、します。 次の例は、このような 1 つのケースを示しています。 +"G17" 書式指定子と 値を共に使用すると、元の 値のラウンド トリップが正常に実行されます。 これは、 が IEEE 754-2008 準拠の倍精度 (`binary64`) 浮動小数点数 (最大 17 桁の精度) であるためです。 場合によっては、"R" が倍精度浮動小数点値のラウンドトリップに失敗するため、["R" 書式指定子](#RFormatString)の代わりに使用することをお勧めします。 このような場合の例を次に示します。 [!code-csharp[Round-tripping a Double](../../../samples/snippets/standard/base-types/format-strings/csharp/g17.cs)] [!code-vb[Round-tripping a Double](../../../samples/snippets/standard/base-types/format-strings/vb/g17.vb)] -使用すると、値、"G9"書式指定子により、元の値のラウンドト リップでは正常にします。 これは、ためは、IEEE 754 2008 準拠単精度 (`binary32`) 浮動小数点数の最大 9 桁の精度を提供します。 代わりに、使用することをお勧め、 ["R"書式指定子](#RFormatString)ラウンドト リップに成功の単精度浮動小数点値に、場合によっては"R"が失敗したため、します。 +"G9" 書式指定子と 値を共に使用すると、元の 値のラウンド トリップが正常に実行されます。 これは、 が IEEE 754-2008 準拠の単精度 (`binary32`) 浮動小数点数 (最大 9 桁の精度) であるためです。 場合によっては、"R" が単精度浮動小数点値のラウンドトリップに失敗するため、["R" 書式指定子](#RFormatString)の代わりに使用することをお勧めします。 結果文字列は、現在の オブジェクトの書式情報に影響されます。 結果文字列の書式を制御する のプロパティの一覧を次の表に示します。 @@ -277,9 +280,9 @@ ms.lasthandoff: 11/21/2017 ## ラウンドトリップ ("R") 書式指定子 - ラウンドト リップ ("R") 書式指定子は、文字列に変換される数値の値を数値に解析することを確認しようとします。 この書式指定は、 型、 型、および 型でだけサポートされています。 + ラウンド トリップ ("R") 書式指定子は、文字列に変換された数値が解析され、同じ数値に戻るように試行します。 この書式指定は、 型、 型、および 型でだけサポートされています。 -値、場合によっては、"R"書式指定子は、元の値をラウンドト リップに成功に失敗しも比較的不十分なパフォーマンスを提供します。 代わりに、推奨を使用すること、 ["G17"](#GFormatString)書式指定子の値、および["G9"](#GFormatString)書式指定子をラウンドト リップに成功値。 + 値と 値の場合、"R" 書式指定子で元の値を適切にラウンド トリップできないことがあります、また、パフォーマンスが比較的低いこともあります。 値を適切にラウンドトリップするには、 値に ["G17"](#GFormatString) 書式指定子を使用し、 値に ["G9"](#GFormatString) 書式指定子を使用することをお勧めします。 この指定子を使用して 値の書式を設定すると、その文字列形式に 値の有効桁数がすべて含まれます。 @@ -292,7 +295,7 @@ ms.lasthandoff: 11/21/2017 ||整数部と小数部を区切る文字列を定義します。| ||指数部が正であることを示す文字列を定義します。| - 次の形式の例、ラウンドト リップ書式指定子を持つ値です。 + 次の例では、ラウンドトリップ書式指定子を使って 値の書式を設定します。 [!code-cpp[R format specifier with a BigInteger](../../../samples/snippets/standard/base-types/format-strings/biginteger-r.cpp)] [!code-csharp[R format specifier with a BigInteger](../../../samples/snippets/standard/base-types/format-strings/biginteger-r.cs)] @@ -325,12 +328,12 @@ ms.lasthandoff: 11/21/2017 [表のトップへ](#table) -## ノート +## メモ ### コントロール パネルの設定 コントロール パネルの **[地域と言語のオプション]** での設定は、書式設定操作によって生成される結果の文字列に影響します。 これらの設定は、書式設定の制御に使用される値を提供する現在のスレッド カルチャに関連付けられた オブジェクトを初期化するために使用されます。 コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。 - さらに場合、コンス トラクターを使用して、新しいインスタンスを作成するを現在のシステム カルチャによって確立された任意のカスタマイズと同じカルチャを表すオブジェクト、**地域と言語のオプション**コントロール パネル では、新しいに適用されるオブジェクト。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 + また、 コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい オブジェクトをインスタンス化した場合、コントロール パネルの **[地域と言語のオプション]** 項目で設定されたカスタマイズが新しい オブジェクトに適用されます。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 ### NumberFormatInfo のプロパティ 書式設定は、現在の オブジェクトのプロパティの影響を受けます。このオブジェクトは、現在のスレッド カルチャによって暗黙的に指定されるか、または書式設定を実行するメソッドの パラメーターによって明示的に指定されます。 このパラメーターには、 オブジェクトまたは オブジェクトを指定してください。 @@ -351,7 +354,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[system.x.tostring-and-culture#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.X.ToString-and-Culture/cs/xts.cs#1)] [!code-vb[system.x.tostring-and-culture#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.X.ToString-and-Culture/vb/xts.vb#1)] -## 関連項目 +## 参照 [Custom Numeric Format Strings](../../../docs/standard/base-types/custom-numeric-format-strings.md) [型の書式設定](../../../docs/standard/base-types/formatting-types.md) diff --git a/docs/standard/base-types/standard-timespan-format-strings.md b/docs/standard/base-types/standard-timespan-format-strings.md index a4941942eb0..40d137c2829 100644 --- a/docs/standard/base-types/standard-timespan-format-strings.md +++ b/docs/standard/base-types/standard-timespan-format-strings.md @@ -23,18 +23,21 @@ helpviewer_keywords: - standard TimeSpan format strings - formatting [.NET Framework], time intervals ms.assetid: 9f6c95eb-63ae-4dcc-9c32-f81985c75794 -caps.latest.revision: "16" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: c4c486728ee4f98a6718c4d019976fccd6f380d7 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 02dd73cd7f8f6be07b298e6fb1aac2b4759d21bb +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 標準 TimeSpan 書式指定文字列 -標準的な書式指定文字列のテキスト表現を定義する単一の書式指定子を使用して、書式設定操作によって生成される値。 空白を含む複数の文字で構成される書式指定文字列は、カスタムの 書式指定文字列として解釈されます。 詳細については、「[カスタム TimeSpan 書式指定文字列](../../../docs/standard/base-types/custom-timespan-format-strings.md)」をご覧ください。 + 標準の 書式指定文字列は、単一の書式指定子を使用して、書式設定操作によって生成される 値のテキスト表現を定義します。 空白を含む複数の文字で構成される書式指定文字列は、カスタムの 書式指定文字列として解釈されます。 詳細については、「[カスタム TimeSpan 書式指定文字列](../../../docs/standard/base-types/custom-timespan-format-strings.md)」をご覧ください。 値の文字列形式は、 メソッドのオーバーロードの呼び出しと、 などの複合書式指定をサポートするメソッドによって生成されます。 詳細については、「[型の書式設定](../../../docs/standard/base-types/formatting-types.md)」と「[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)」をご覧ください。 次の例では、書式設定操作で標準書式指定文字列を使用する方法を示しています。 @@ -48,7 +51,7 @@ ms.lasthandoff: 11/21/2017 標準の時間間隔書式指定子を次の表に示します。 -|書式指定子|名前|説明|例| +|書式指定子|name|説明|使用例| |----------------------|----------|-----------------|--------------| |"c"|固定 (不変) 書式|この指定子はカルチャに依存しません。 `[-][d’.’]hh’:’mm’:’ss[‘.’fffffff]` の書式を使用します。

("t" と "T" の各書式指定文字列によって生成される結果は同じになります。)

詳細については、「[固定の ("c") 書式指定子](#Constant)」を参照してください。|`TimeSpan.Zero` -> 00:00:00

`New TimeSpan(0, 0, 30, 0)` -> 00:30:00

`New TimeSpan(3, 17, 25, 30, 500)` -> 3.17:25:30.5000000| |"g"|一般の短い書式|この指定子は必要なものだけを出力します。 カルチャに依存し、`[-][d’:’]h’:’mm’:’ss[.FFFFFFF]` の書式になります。

詳細については、「[一般の短い ("g") 書式指定子](#GeneralShort)」を参照してください。|`New TimeSpan(1, 3, 16, 50, 500)` -> 1:3:16:50.5 (en-US)

`New TimeSpan(1, 3, 16, 50, 500)` -> 1:3:16:50,5 (fr-FR)

`New TimeSpan(1, 3, 16, 50, 599)` -> 1:3:16:50.599 (en-US)

`New TimeSpan(1, 3, 16, 50, 599)` -> 1:3:16:50,599 (fr-FR)| @@ -71,7 +74,7 @@ ms.lasthandoff: 11/21/2017 |*ss*|"0" ~ "59" の範囲の秒数。| |*fffffff*|省略可能な秒の小数部。 "0000001" (1 ティック、つまり 1,000 万分の 1 秒) ~ "9999999" (1,000 万分の 9,999,999 秒、つまり 1 秒より 1 ティック少ない) までの範囲の値が可能です。| - "g" および "G" 書式指定子とは異なり、"c" 書式指定子はカルチャに依存しません。 不変で、かつ より前のすべての .NET Framework バージョンに共通する、[!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 値の文字列形式を生成します。 既定値は、"c"書式指定文字列以外の場合は、メソッドは、"c"書式指定文字列を使用して時間間隔の値を書式化します。 + "g" および "G" 書式指定子とは異なり、"c" 書式指定子はカルチャに依存しません。 不変で、かつ より前のすべての .NET Framework バージョンに共通する、[!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 値の文字列形式を生成します。 "c" は、既定の 書式文字列です。 メソッドは、"c" 書式指定文字列を使用して時間間隔値の書式を設定します。 > [!NOTE] > では、動作が "c" 標準書式指定文字列と同じである "t" と "T" の標準書式指定文字列もサポートされます。 @@ -137,7 +140,7 @@ ms.lasthandoff: 11/21/2017 [表のトップへ](#Top) -## 関連項目 +## 参照 [型の書式設定](../../../docs/standard/base-types/formatting-types.md) [カスタム時間間隔書式指定文字列](../../../docs/standard/base-types/custom-timespan-format-strings.md) - [文字列の解析](../../../docs/standard/base-types/parsing-strings.md) + [Parsing Strings](../../../docs/standard/base-types/parsing-strings.md) diff --git a/docs/standard/base-types/stringbuilder.md b/docs/standard/base-types/stringbuilder.md index 451d9e95b2c..6e2beedd429 100644 --- a/docs/standard/base-types/stringbuilder.md +++ b/docs/standard/base-types/stringbuilder.md @@ -1,5 +1,5 @@ --- -title: ".NET における StringBuilder クラスの使用" +title: ".NET の StringBuilder クラスを使用する" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -22,54 +22,57 @@ helpviewer_keywords: - Insert method - strings [.NET Framework], StringBuilder object ms.assetid: 5c14867c-9a99-45bc-ae7f-2686700d377a -caps.latest.revision: "21" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 3a6c8f6dee9f2a1da6ed4a8219c1b4832464d9aa -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: cf8755ae6530c22bac88d8d8c5a6e92d86432994 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- -# .NET における StringBuilder クラスの使用 -オブジェクトは変更できません。 内のメソッドのいずれかを使用するたびに、クラス、その新しいオブジェクトに対して、新しい使用領域の割り当てを必要とするメモリ内に新しい文字列オブジェクトを作成します。 新規作成に伴うオーバーヘッドを文字列に繰り返しの変更を実行する必要がある場合、オブジェクトはコストが高くなることができます。 クラスは、新しいオブジェクトを作成せずに文字列を変更する場合に使用できます。 たとえばを使用して、クラスは、ループで多数の文字列を連結するときのパフォーマンスを向上できます。 +# .NET の StringBuilder クラスを使用する + オブジェクトは、変更できません。 クラスのメソッドのいずれかを使用するたびに、新しい文字列オブジェクトをメモリ内に作成します。その際、その新しいオブジェクトに対して領域を新たに割り当てる必要があります。 文字列に対して何度も変更を実行する必要がある場合、新しい オブジェクトの作成に関連したオーバーヘッドが高コストになる可能性があります。 新しいオブジェクトを作成せずに文字列を変更したい場合は、 クラスを使用することができます。 たとえば、ループで多数の文字列を連結する場合に、 クラスを使用してパフォーマンスを向上させることができます。 ## System.Text 名前空間のインポート - クラスに存在、名前空間。 コードで完全修飾型名を指定することを避けるため、インポートすることができます、名前空間。 + クラスは、 名前空間にあります。 完全修飾型名をコードに指定しなくてもすむように、 名前空間をインポートすることができます。 [!code-cpp[Conceptual.StringBuilder#11](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#11)] [!code-csharp[Conceptual.StringBuilder#11](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#11)] [!code-vb[Conceptual.StringBuilder#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#11)] ## StringBuilder オブジェクトのインスタンス化 - 新しいインスタンスを作成することができます、クラスを次の例に示すように、オーバー ロードされたコンス トラクター メソッドの 1 つで変数を初期化します。 + 以下の例に示すように、オーバーロードされたコンストラクター メソッドの 1 つで変数を初期化することにより、 クラスの新しいインスタンスを作成することができます。 [!code-cpp[Conceptual.StringBuilder#1](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#1)] [!code-csharp[Conceptual.StringBuilder#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#1)] [!code-vb[Conceptual.StringBuilder#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#1)] ## 容量と長さの設定 - ただし、をカプセル化される文字列の文字数を拡張できるようにする動的オブジェクトは、保持可能な文字の最大数の値を指定することができます。 この値は、オブジェクトの容量が呼び出され、文字列の長さと混同しないでを現在を保持します。 たとえばの新しいインスタンスを作成する場合があります、文字列「こんにちは」は、長さが 5 のクラスが、オブジェクトが最大容量として 25 に含まれているを指定する場合があります。 変更する場合、 、これによって再配置のサイズ自体の容量に達するまでします。 容量に達すると、新しい領域が自動的に割り当てられ、容量が 2 倍になります。 容量を指定することができます、クラスのオーバー ロードされたコンス トラクターのいずれかを使用します。 次の例は、`MyStringBuilder` オブジェクトを最大 25 の領域に拡張できることを示しています。 + は、カプセル化する文字列内の文字数を拡張できるようにする動的オブジェクトですが、保持可能な最大文字数の値を指定することができます。 この値を、オブジェクトの容量と呼びます。これを現行の が保持する文字列の長さと混同すべきではありません。 たとえば、"Hello" という長さ 5 の文字列を持つ クラスの新しいインスタンスを作成するときに、オブジェクトの最大容量として 25 を指定することができます。 を変更する際、容量に達するまでは、自動再割り当ては発生しません。 容量に達すると、新しい領域が自動的に割り当てられ、容量が 2 倍になります。 オーバーロードされたコンストラクターのいずれかを使用して、 クラスの容量を指定することができます。 次の例は、`MyStringBuilder` オブジェクトを最大 25 の領域に拡張できることを示しています。 [!code-cpp[Conceptual.StringBuilder#2](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#2)] [!code-csharp[Conceptual.StringBuilder#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#2)] [!code-vb[Conceptual.StringBuilder#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#2)] - さらに、読み取り/書き込みを行うこともできますプロパティをオブジェクトの最大長を設定します。 次の例では、**Capacity** プロパティを使用して、オブジェクトの最大長を定義しています。 + また、 の読み取り/書き込みプロパティを使用して、オブジェクトの最大長を設定することができます。 次の例では、**Capacity** プロパティを使用して、オブジェクトの最大長を定義しています。 [!code-cpp[Conceptual.StringBuilder#3](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#3)] [!code-csharp[Conceptual.StringBuilder#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#3)] [!code-vb[Conceptual.StringBuilder#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#3)] - を現在の容量を確認するメソッドを使用できます**StringBuilder**です。 容量が渡された値よりも大きい場合、変更は行われません。しかし、容量が渡された値より小さい場合は、渡された値と一致するよう現行の容量が変更されます。 + メソッドを使用して、現行 **StringBuilder** の容量を確認することができます。 容量が渡された値よりも大きい場合、変更は行われません。しかし、容量が渡された値より小さい場合は、渡された値と一致するよう現行の容量が変更されます。 - プロパティも表示または設定します。 **Length** プロパティを、**Capacity** プロパティより大きな値に設定する場合、**Capacity** プロパティは **Length** プロパティと同じ値に自動的に変更されます。 **Length** プロパティを、現行の **StringBuilder** 内の文字列の長さより小さい値に設定すると、文字列は短縮されます。 + プロパティを表示または設定することもできます。 **Length** プロパティを、**Capacity** プロパティより大きな値に設定する場合、**Capacity** プロパティは **Length** プロパティと同じ値に自動的に変更されます。 **Length** プロパティを、現行の **StringBuilder** 内の文字列の長さより小さい値に設定すると、文字列は短縮されます。 ## StringBuilder 文字列の変更 **StringBuilder** の内容の変更に使用できるメソッドを次の表に一覧表示します。 -|メソッド名|用途| +|メソッド名|使用| |-----------------|---------| ||現行の **StringBuilder** の末尾に情報を追加します。| ||文字列に渡される書式指定子を、書式設定されたテキスト文字列で置き換えます。| @@ -78,47 +81,47 @@ ms.lasthandoff: 11/21/2017 ||指定されたインデックスで、指定された文字を置き換えます。| ### 追加 - **Append**現在によって表される文字列の末尾にテキストまたはオブジェクトの文字列表現を追加するメソッドを使用できます**StringBuilder**です。 次の例では、**StringBuilder** を "Hello World" に初期設定し、テキストをオブジェクトの末尾に追加しています。 領域は、必要に応じて自動的に割り当てられます。 + **Append** メソッドを使用して、現行 **StringBuilder** によって表される文字列の末尾にオブジェクトのテキストまたは文字列形式を追加することができます。 次の例では、**StringBuilder** を "Hello World" に初期設定し、テキストをオブジェクトの末尾に追加しています。 領域は、必要に応じて自動的に割り当てられます。 [!code-cpp[Conceptual.StringBuilder#4](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#4)] [!code-csharp[Conceptual.StringBuilder#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#4)] [!code-vb[Conceptual.StringBuilder#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#4)] ### AppendFormat - メソッドの末尾にテキストを追加する、オブジェクト。 複合書式指定機能をサポートしています (詳細については、次を参照してください。[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)) を呼び出して、以上の書式設定するオブジェクトの実装です。 そのため、数値、日時、および列挙の値に対して標準書式文字列を受け取り、数値と日時の値、およびカスタム型に定義されている書式文字列に対してカスタム書式文字列を受け取ります。 (書式設定については、「[型の書式設定](../../../docs/standard/base-types/formatting-types.md)」を参照してください。)このメソッドを使用して変数の形式をカスタマイズし、それらの値を追加することができます、です。 次の例では、の最後に、通貨値として書式設定された整数値を配置する方法、オブジェクト。 + メソッドは、 オブジェクトの末尾にテキストを追加します。 これは、書式設定される 1 つ以上のオブジェクトの 実装を呼び出すことにより、複合書式機能をサポートしています (詳細については、「[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)」を参照してください)。 そのため、数値、日時、および列挙の値に対して標準書式文字列を受け取り、数値と日時の値、およびカスタム型に定義されている書式文字列に対してカスタム書式文字列を受け取ります。 (書式設定については、「[型の書式設定](../../../docs/standard/base-types/formatting-types.md)」を参照してください。)このメソッドを使用して、変数の書式をカスタマイズし、その値を に追加することができます。 次の例では、 メソッドを使用して、 オブジェクトの末尾に、通貨値として書式設定されている整数値を挿入しています。 [!code-cpp[Conceptual.StringBuilder#5](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#5)] [!code-csharp[Conceptual.StringBuilder#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#5)] [!code-vb[Conceptual.StringBuilder#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#5)] ### 挿入 - メソッドは、現在の指定した位置に文字列型またはオブジェクトを追加します。オブジェクト。 次の例では、このメソッドを使用の 6 番目の位置に単語を挿入する、オブジェクト。 + メソッドは、現行の オブジェクトの指定された位置に、文字列またはオブジェクトを追加します。 次の例では、このメソッドを使用して、 オブジェクトの 6 番目の位置に単語を挿入しています。 [!code-cpp[Conceptual.StringBuilder#6](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#6)] [!code-csharp[Conceptual.StringBuilder#6](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#6)] [!code-vb[Conceptual.StringBuilder#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#6)] ### 削除 - 使用することができます、**削除**現在から指定数の文字を削除する方法オブジェクト、指定した 0 から始まるインデックス位置を開始します。 次の例では、**削除**を短縮する方法、オブジェクト。 + **Remove** メソッドを使用して、現行の オブジェクトから指定された文字数を削除します (0 から始まる指定されたインデックスで開始します)。 次の例では、**Remove** メソッドを使用して、 オブジェクトを短縮しています。 [!code-cpp[Conceptual.StringBuilder#7](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#7)] [!code-csharp[Conceptual.StringBuilder#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#7)] [!code-vb[Conceptual.StringBuilder#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#7)] ### 置換 - **置換**内の文字を置換するメソッドを使用することができます、オブジェクトと別の指定した文字。 次の例では、**置換**を検索するメソッド、オブジェクトの感嘆符のすべてのインスタンスの文字 (!)、疑問符 (?) 文字 (?) に置き換えます。 + **Replace** メソッドを使用して、 オブジェクト内の文字を、指定された別の文字で置き換えることができます。 次の例では、**Replace** メソッドを使用して、感嘆符 (!) のすべてのインスタンスを求めて オブジェクトを検索し、疑問符 (?) で置き換えています。 [!code-cpp[Conceptual.StringBuilder#8](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#8)] [!code-csharp[Conceptual.StringBuilder#8](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#8)] [!code-vb[Conceptual.StringBuilder#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#8)] ## 文字列への StringBuilder オブジェクトの変換 - 変換する必要があります、オブジェクトをオブジェクトで表される文字列を渡す前に、オブジェクトを持つメソッドをパラメーターまたはユーザー インターフェイスに表示します。 この変換を行うには呼び出すことによって、メソッドです。 次の例ではさまざまなメソッドを呼び出し、続いて、文字列を表示するメソッド。 + オブジェクトで表される文字列を パラメーターを持つメソッドに渡すかそれをユーザー インターフェイスに表示するには、事前に オブジェクトを オブジェクトに変換する必要があります。 この変換は、 メソッドを呼び出すことによって行います。 次の例では、いくつかの メソッドを呼び出し、その後、 メソッドを呼び出して文字列を表示しています。 [!code-csharp[Conceptual.StringBuilder#10](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/tostringexample1.cs#10)] [!code-vb[Conceptual.StringBuilder#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/tostringexample1.vb#10)] -## 関連項目 +## 参照 [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) [型の書式設定](../../../docs/standard/base-types/formatting-types.md) diff --git a/docs/standard/base-types/substitutions-in-regular-expressions.md b/docs/standard/base-types/substitutions-in-regular-expressions.md index 82818a64f12..a590c3ec77d 100644 --- a/docs/standard/base-types/substitutions-in-regular-expressions.md +++ b/docs/standard/base-types/substitutions-in-regular-expressions.md @@ -19,15 +19,18 @@ helpviewer_keywords: - constructs, substitutions - substitutions ms.assetid: d1f52431-1c7d-4dc6-8792-6b988256892e -caps.latest.revision: "20" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 7a92c454548c69d1a64c954ab2d510b77553a895 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f93584b9dff721c8521d8cb58aaf5eab2c1fc931 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 正規表現での置換 置換は、置換パターン内でのみ認識される言語要素です。 置換では、正規表現パターンを使用して、入力文字列内の一致するテキストを置換するテキストの全体または一部を定義します。 置換パターンは、1 個以上の置換と、リテラル文字で構成されます。 置換パターンは、 パラメーターを持つ `replacement` メソッドのオーバーロードおよび メソッドに対して用意されています。 メソッドは、一致するパターンを、 `replacement` パラメーターで定義されているパターンで置換します。 @@ -149,7 +152,7 @@ ms.lasthandoff: 10/18/2017 ## 一致した文字列より前にあるテキストの置換 - $\` の置換は、一致した場所より前にある入力文字列全体で一致した文字列を置換します。 つまり、一致した場所までの入力文字列を複製し、一致したテキストを削除します。 結果文字列では、一致したテキストに続くテキストは変更されません。 入力文字列に複数の一致文字列がある場合、置換テキストは、テキストが前の一致で置換された文字列からではなく、元の入力文字列から派生します \(この例では、具体的なを示します。\)一致する文字列がない場合、$\` の置換は無効です。 + $\` の置換は、一致した場所より前にある入力文字列全体で一致した文字列を置換します。 つまり、一致した場所までの入力文字列を複製し、一致したテキストを削除します。 結果文字列では、一致したテキストに続くテキストは変更されません。 入力文字列に複数の一致文字列がある場合、置換テキストは、テキストが前の一致で置換された文字列からではなく、元の入力文字列から派生します \(具体的な例を次に示します。\)一致する文字列がない場合、$\` の置換は無効です。 次の例では、正規表現パターン `\d+` を使用して、入力文字列内の 1 つ以上の 10 進数のシーケンスを照合します。 置換文字列 $` は、これらの数字を、一致文字列より前にあるテキストで置換します。 @@ -193,7 +196,7 @@ ms.lasthandoff: 10/18/2017 ## キャプチャされた最後のグループの置換 `$+` の置換は、キャプチャされた最後のグループで一致した文字列を置換します。 キャプチャされたグループがない場合、またはキャプチャされた最後のグループの値が の場合、`$+` の置換は無効です。 - 次の例では、文字列内の重複する単語を識別し、 `$+` の置換を使用して、これらの単語をその単語 1 つに置換します。 オプションを使用すると、大文字と小文字の違いを除いて同一である単語が重複と見なされるようになります。 + 次の例では、文字列内の重複する単語を識別し、`$+` の置換を使用して、これらの単語をその単語 1 つに置換します。 オプションを使用すると、大文字と小文字の違いを除いて同一である単語が重複と見なされるようになります。 [!code-csharp[Conceptual.Regex.Language.Substitutions#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.substitutions/cs/lastmatch1.cs#6)] [!code-vb[Conceptual.Regex.Language.Substitutions#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.substitutions/vb/lastmatch1.vb#6)] @@ -226,5 +229,5 @@ ms.lasthandoff: 10/18/2017 |1|3|123|ABC**ABC123DEF456**DEF456| |2|5|456|ABCABC123DEF456DEF**ABC123DEF456**| -## 関連項目 +## 参照 [正規表現言語 - クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) diff --git a/docs/standard/base-types/trimming.md b/docs/standard/base-types/trimming.md index 49d41e2630f..71acae8fe5c 100644 --- a/docs/standard/base-types/trimming.md +++ b/docs/standard/base-types/trimming.md @@ -1,5 +1,5 @@ --- -title: "トリミングおよび .NET の文字列から文字を削除します。" +title: ".NET の文字列からの文字のトリムと削除" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -21,20 +21,23 @@ helpviewer_keywords: - TrimStart method - removing characters ms.assetid: ab248dab-70d4-4413-81c6-542d153fd195 -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: fde24a97234d275d3d599f13bfc4063af939507b -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: dac047c7efefcacb959401aedcb96080810f2278 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- -# トリミングおよび .NET の文字列から文字を削除します。 +# .NET の文字列からの文字のトリムと削除 文章を個々の単語に分割すると、単語の先頭または末尾に空白が残る場合があります。 そのような場合は、**System.String** クラスのトリム メソッドのいずれかを使用して、文字列内の指定した位置から任意の数の空白またはその他の文字を削除できます。 使用できるトリム メソッドとその説明を次の表に示します。 -|メソッド名|用途| +|メソッド名|使用| |-----------------|---------| ||文字列の先頭と末尾から、空白または文字配列で指定した文字を削除します。| ||文字列の末尾から、文字配列で指定した文字を削除します。| @@ -56,7 +59,7 @@ ms.lasthandoff: 10/18/2017 ## TrimEnd **String.TrimEnd** メソッドは、文字列の末尾から文字を削除して新しい文字列オブジェクトを作成します。 このメソッドには、削除する文字を指定する文字配列が渡されます。 文字配列内での要素の順序は、トリム操作に影響しません。 トリム操作は、文字配列で指定された文字が見つからなくなった時点で停止します。 - 次の例を使用して文字列の最後の文字を削除する、 **TrimEnd**メソッドです。 この例では、文字配列内の文字の順序が操作に影響しないことを示すために、`'r'` という文字と `'W'` という文字の順序を逆にしてあります。 このコードは、`MyString` の最後の単語だけでなく、最初の単語の一部も削除します。 + **TrimEnd** メソッドを使用して文字列の末尾の数文字を削除する例を次に示します。 この例では、文字配列内の文字の順序が操作に影響しないことを示すために、`'r'` という文字と `'W'` という文字の順序を逆にしてあります。 このコードは、`MyString` の最後の単語だけでなく、最初の単語の一部も削除します。 [!code-cpp[Conceptual.String.BasicOps#18](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/trimming.cpp#18)] [!code-csharp[Conceptual.String.BasicOps#18](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/trimming.cs#18)] @@ -97,5 +100,5 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Conceptual.String.BasicOps#23](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/replace1.cs#23)] [!code-vb[Conceptual.String.BasicOps#23](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/replace1.vb#23)] -## 関連項目 +## 参照 [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) diff --git a/docs/standard/choosing-core-framework-server.md b/docs/standard/choosing-core-framework-server.md index 02deb32fdb5..8c53812c71f 100644 --- a/docs/standard/choosing-core-framework-server.md +++ b/docs/standard/choosing-core-framework-server.md @@ -6,11 +6,14 @@ ms.author: mairaw ms.date: 08/15/2016 ms.topic: article ms.prod: .net -ms.openlocfilehash: fa001492aa76c4690faca23cb2a1e0467a857a6d -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2108125b9c01a2686d66b0ebd4e43e7ac863e223 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # サーバー アプリ用 .NET Core と .NET Framework の選択 @@ -39,7 +42,7 @@ ms.lasthandoff: 11/21/2017 複数のプラットフォーム (Windows、Linux、macOS ) で実行する必要があるアプリケーション (Web/サービス) の場合は、.NET Core を使用します。 -.NET Core は、開発ワークステーションとして前述のオペレーティング システムをサポートしています。 Visual Studio では、Windows や macOS の統合開発環境 (IDE) を提供します。 また、macOS、Linux、および Windows 上で動作する Visual Studio Code も使用できます。 Visual Studio Code は、IntelliSense、デバッグなどの .NET Core をサポートしています。 Sublime、Emacs、VI など、ほとんどのサード パーティ製エディターは、.NET Core で動作します。 これらのサード パーティ製エディターでは、[Omnisharp](http://www.omnisharp.net/) を使用して、エディターを IntelliSense にします。 さらに、コード エディターをまったく使用せずに、サポートされているすべてのプラットフォームで利用可能な [.NET Core CLI ツール](../core/tools/index.md)を直接使用することもできます。 +.NET Core は、開発ワークステーションとして前述のオペレーティング システムをサポートしています。 Visual Studio では、Windows および macOS 用の統合開発環境 (IDE) が用意されています。 また、macOS、Linux、および Windows 上で動作する Visual Studio Code も使用できます。 Visual Studio Code は、IntelliSense、デバッグなどの .NET Core をサポートしています。 Sublime、Emacs、VI など、ほとんどのサード パーティ製エディターは、.NET Core で動作します。 これらのサード パーティ製エディターでは、[Omnisharp](http://www.omnisharp.net/) を使用して、エディターを IntelliSense にします。 さらに、コード エディターをまったく使用せずに、サポートされているすべてのプラットフォームで利用可能な [.NET Core CLI ツール](../core/tools/index.md)を直接使用することもできます。 ### マイクロサービス アーキテクチャ @@ -106,7 +109,7 @@ Docker コンテナーは、オンプレミスの Linux または Windows イン Microsoft やサードパーティ製のプラットフォームの中には、.NET Core をサポートしないものもあります。 たとえば、Service Fabric のステートフル Reliable Services や Service Fabric Reliable Actors などのいくつかの Azure サービスでは .NET Framework が必要です。 他のいくつかのサービスでは、.NET Core ではまだ使用できない SDK が提供されます。 すべての Azure サービスでは .NET Core を使用しているために、これは過渡的な状況です。 その間、クライアント SDK の代わりに同等の REST API をいつでも使用できます。 ## 関連項目 - [ASP.NET と ASP.NET Core を選択します。](/aspnet/core/choose-aspnet-framework) + [ASP.NET と ASP.NET Core の選択](/aspnet/core/choose-aspnet-framework) [.NET Core のガイド](../core/index.md) [.NET Framework から .NET Core への移植](../core/porting/index.md) [Docker 上の .NET Framework のガイド](../framework/docker/index.md) diff --git a/docs/standard/class-libraries.md b/docs/standard/class-libraries.md index 88d7af04ad5..2bf8c42d515 100644 --- a/docs/standard/class-libraries.md +++ b/docs/standard/class-libraries.md @@ -10,11 +10,14 @@ ms.prod: .net ms.technology: dotnet-standard ms.devlang: dotnet ms.assetid: a67484c3-fe92-44d8-8fa3-36fa2071d880 -ms.openlocfilehash: c72cdcbbe20c3c7a6890cdacb446e3db8de1b37a -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 5445c6971e243e9fc2eea34937683a5c3c432c01 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # .NET クラス ライブラリ @@ -24,7 +27,7 @@ ms.lasthandoff: 10/18/2017 * **プラットフォーム固有** クラス ライブラリは、特定のプラットフォーム (たとえば、.NET Framework、Xamarin iOS) のすべての API にアクセスできますが、そのプラットフォームを対象とするアプリケーションとライブラリでのみ使用できます。 * **ポータブル** クラス ライブラリは、API のサブセットへのアクセスがあり、複数のプラットフォームを対象とするアプリケーションとライブラリで使用できます。 -* **.NET Core** クラス ライブラリは、プラットフォーム固有のライブラリとポータブル ライブラリの概念を両方の長所を持つ 1 つのモデルに統合しています。 +* **.NET Standard** クラス ライブラリは、プラットフォーム固有のライブラリとポータブル ライブラリの概念を両方の長所を持つ 1 つのモデルに統合しています。 ## プラットフォーム固有のクラス ライブラリ diff --git a/docs/standard/collections/thread-safe/how-to-add-and-take-items.md b/docs/standard/collections/thread-safe/how-to-add-and-take-items.md index 9dbcd62022d..b5f974962d6 100644 --- a/docs/standard/collections/thread-safe/how-to-add-and-take-items.md +++ b/docs/standard/collections/thread-safe/how-to-add-and-take-items.md @@ -11,22 +11,26 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: thread-safe collections, blocking dictionary +helpviewer_keywords: +- thread-safe collections, blocking dictionary ms.assetid: 38f2f3d8-15e5-4bf4-9c83-2b5b6f22bad1 -caps.latest.revision: "7" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: b365d6d3236919f65c840343ec3b33edebea758b -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c19e78ca05b339898a27a1e5f98412224586aae9 +ms.sourcegitcommit: c3ebb11a66e85a465c9ba2c42592222630b7ff9e ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/25/2018 --- # 方法: BlockingCollection の項目を個別に追加および取得する この例では、ブロッキングと非ブロッキングの 2 つの方法で の項目を追加、削除する方法を示します。 の詳細については、「[BlockingCollection の概要](../../../../docs/standard/collections/thread-safe/blockingcollection-overview.md)」を参照してください。 - 空になって追加する要素がなくなるまで を列挙する方法の例については、「[方法: ForEach を使用して BlockingCollection 内の項目を削除する](../../../../docs/standard/collections/thread-safe/how-to-use-foreach-to-remove.md)」をご覧ください。 + 空になって追加する要素がなくなるまで を列挙する方法の例については、「[方法: ForEach を使用して BlockingCollection 内の項目を削除する](../../../../docs/standard/collections/thread-safe/how-to-use-foreach-to-remove.md)」を参照してください。 ## 例 この最初の例では、コレクションが一時的に空 (取得時) または最大容量 (追加時) になるか、指定されたタイムアウト期間が経過したときに、操作をブロックするように、項目を追加および取得する方法を示します。 最大容量のブロックは、BlockingCollection が、コンストラクターで指定された最大容量で作成された場合にのみ有効になることに注意してください。 @@ -35,11 +39,11 @@ ms.lasthandoff: 11/21/2017 [!code-vb[CDS_BlockingCollection#01](../../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_blockingcollection/vb/simpleblocking.vb#01)] ## 例 - この 2 番目の例では、操作をブロックしないように、項目を追加および取得する方法を示します。 項目が存在しない場合、サイズ制限のあるコレクションの最大容量に達した場合、またはタイムアウト期間が経過した場合、 または 操作は false を返します。 これによりスレッドはしばらくの間、他の何らかの有益な処理を行い、後からもう一度新しいアイテムを取得するか、以前に追加できなかった項目を追加しようとします。 このプログラムはまた、 へのアクセス時にキャンセルを実装する方法も示しています。 + この 2 番目の例では、操作をブロックしないように、項目を追加および取得する方法を示します。 項目が存在しない場合、サイズ制限のあるコレクションの最大容量に達した場合、またはタイムアウト期間が経過した場合、 または 操作は false を返します。 これによりスレッドはしばらくの間、他の何らかの有益な処理を行い、後からもう一度新しいアイテムを取得するか、以前に追加できなかった項目を追加しようとします。 このプログラムはまた、 へのアクセス時にキャンセルを実装する方法も示しています。 [!code-csharp[CDS_BlockingCollection#02](../../../../samples/snippets/csharp/VS_Snippets_Misc/cds_blockingcollection/cs/example02.cs#02)] [!code-vb[CDS_BlockingCollection#02](../../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_blockingcollection/vb/nonblockingbc.vb#02)] -## 関連項目 +## 参照 [BlockingCollection の概要](../../../../docs/standard/collections/thread-safe/blockingcollection-overview.md) diff --git a/docs/standard/data/xml/accessing-attributes-in-the-dom.md b/docs/standard/data/xml/accessing-attributes-in-the-dom.md index a1327ad96dc..ba5b5a94f23 100644 --- a/docs/standard/data/xml/accessing-attributes-in-the-dom.md +++ b/docs/standard/data/xml/accessing-attributes-in-the-dom.md @@ -12,25 +12,28 @@ dev_langs: - csharp - vb ms.assetid: ce2df341-a1a4-4e97-8e1b-cd45b8e3e71e -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: a433ec5f83a50aa4fe4b2017a0dac3d2a5e5710c -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4f134761c4dadcef4692194293c8c99899bb6be2 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # DOM の属性へのアクセス -属性は要素のプロパティであり、要素の子ではありません。 この区別は、XML ドキュメント オブジェクト モデル (DOM) の兄弟ノード、親ノード、および子ノードの間の移動に使用するメソッドで重要な意味を持ちます。 たとえば、 **PreviousSibling**と**NextSibling**属性または属性の間の要素から移動する方法は使用されません。 代わりに、属性、要素のプロパティと要素が所有するが、 **OwnerElement**プロパティおよび not、 **parentNode**プロパティ、およびナビゲーションの個別の方法があります。 +属性は要素のプロパティであり、要素の子ではありません。 この区別は、XML ドキュメント オブジェクト モデル (DOM) の兄弟ノード、親ノード、および子ノードの間の移動に使用するメソッドで重要な意味を持ちます。 たとえば、**PreviousSibling** メソッドと **NextSibling** メソッドは、要素から属性への移動や属性間の移動には使われません。 属性は要素のプロパティであり、要素によって所有されているため、**OwnerElement** プロパティを持ちますが、**parentNode** プロパティはありません。また、移動には専用のメソッドを使います。 - 現在のノードが要素を使用して、 **HasAttribute**メソッドを要素に関連付けられた任意の属性があるかどうかを参照してください。 要素に属性がある場合は、各種のメソッドで属性にアクセスできます。 要素の 1 つの属性を取得する際、 **GetAttribute**と**GetAttributeNode**のメソッド、 **XmlElement**またはすべての属性を取得します。コレクション。 コレクションに対して反復処理を行う必要がある場合は、コレクションを取得すると便利です。 要素からすべての属性にする場合は、使用、**属性**コレクション内のすべての属性を取得する要素のプロパティです。 + 現在のノードが要素のとき、その要素に関連付けられている属性があるかどうかを調べるには、**HasAttribute** メソッドを使用します。 要素に属性がある場合は、各種のメソッドで属性にアクセスできます。 **XmlElement** の **GetAttribute** メソッドと**GetAttributeNode** メソッドを使用して要素から 1 つの属性を取得するか、すべての属性をコレクションとして取得することができます。 コレクションに対して反復処理を行う必要がある場合は、コレクションを取得すると便利です。 要素のすべての属性が必要な場合は、要素の **Attributes** プロパティを使用して、すべての属性をコレクションに取得できます。 ## コレクションへのすべての属性の取得 - コレクションにすべての属性、要素ノードの場合、 **XmlElement.Attributes**プロパティです。 これを取得、 **XmlAttributeCollection**要素のすべての属性を格納しています。 **XmlAttributeCollection**クラスから継承、 **XmlNamedNode**マップします。 したがって、メソッドとプロパティ コレクションで使用できるでも含まれます、名前付きノード マップで使用できるメソッドとプロパティを特定する、 **XmlAttributeCollection**クラスなど、 **ItemOf**プロパティまたは**Append**メソッドです。 属性のコレクション内の各項目を表す、 **XmlAttribute**ノード。 要素に属性の数を検索、取得、 **XmlAttributeCollection**、使用して、**カウント**プロパティを確認して数**XmlAttribute**コレクション内のノードには。 + 要素ノードのすべての属性をコレクションに取得するには、**XmlElement.Attributes** プロパティを呼び出します。 **XmlElement.Attributes** プロパティにより、要素のすべての属性を含む XmlAttributeCollection を取得できます。 **XmlAttributeCollection** クラスは **XmlNamedNode** マップから継承されます。 このため、コレクションで使用できるメソッドとプロパティには、**ItemOf** プロパティや **Append** メソッドのような **XmlAttributeCollection** クラスに固有のメソッドやプロパティだけでなく、名前付きノード マップで使用できるメソッドとプロパティも含まれます。 属性コレクション内の各項目は、**XmlAttribute** ノードを表します。 要素の属性の数を調べるには、**XmlAttributeCollection** を取得し、**Count** プロパティを使用して、そのコレクションに含まれる **XmlAttribute** ノードの数を調べます。 - 次のコード例は、属性を取得する方法を示しています。 コレクションと、を使用して、**カウント**上に反復処理するメソッドをループのインデックス。 このコードは、その後、コレクションから属性を 1 つ取得して、その値を表示します。 + 属性コレクションを取得し、**Count** メソッドをループ インデックスとして使用して、コレクションに対して反復処理を行うコード サンプルを次に示します。 このコードは、その後、コレクションから属性を 1 つ取得して、その値を表示します。 ```vb Imports System @@ -137,7 +140,7 @@ sale item 属性コレクションの情報は、名前またはインデックス番号によって取得できます。 上の例では、名前を指定してデータを取得しています。 次の例では、インデックス番号を指定してデータを取得します。 - **XmlAttributeCollection**反復処理できるし、は、コレクションの名前またはインデックスを使ってこの例では 0 から始まるインデックスを使用して、次のファイルを使用してコレクションの最初の属性を選択して**baseuri.xml**の入力として、します。 + **XmlAttributeCollection** はコレクションであり、名前またはインデックスを使って反復処理ができるため、次の例では、ゼロベースのインデックスを使用してコレクションの最初の属性を選択しています。入力には、**baseuri.xml** というファイルを使用しています。 ### 入力 @@ -198,7 +201,7 @@ public class Sample ``` ## 個別の属性ノードの取得 - 要素から属性ノードを 1 つ取得するには、 メソッドを使用します。 型のオブジェクトを返します**XmlAttribute**です。 作成したら、 **XmlAttribute**、すべてのメソッドとプロパティで使用できる、クラスを検索するなど、そのオブジェクトで使用可能な**OwnerElement**です。 + 要素から属性ノードを 1 つ取得するには、 メソッドを使用します。 このメソッドは、**XmlAttribute** 型のオブジェクトを返します。 **XmlAttribute** の取得後は、 クラスのすべてのメソッドとプロパティを使用できます。たとえば、**OwnerElement** で、どの要素に所属しているかを調べることができます。 ```vb Imports System @@ -261,11 +264,11 @@ using System.Xml; } ``` - 前の例で示したように、属性コレクションから 1 つの属性ノードを取得することもできます。 次のコード例を示します 1 行のコードを書き込む 1 つの属性を取得するインデックス番号によって、XML ドキュメントのルートからツリーとも呼ばれる、 **DocumentElement**プロパティです。 + 前の例で示したように、属性コレクションから 1 つの属性ノードを取得することもできます。 インデックス番号を指定して、XML ドキュメント ツリーのルートから 1 つの属性を取得する処理を 1 行で記述したコード サンプルを次に示します。**DocumentElement** プロパティを使用します。 ``` XmlAttribute attr = doc.DocumentElement.Attributes[0]; ``` -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md index fa378636f8e..b0ed4b9127b 100644 --- a/docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md +++ b/docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md @@ -12,15 +12,18 @@ dev_langs: - csharp - vb ms.assetid: 898e0f52-8a7c-4d1f-afcd-6ffb28b050b4 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 61c78adff541ac2ba261d31776478a0468e21d4f -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 651a8e11b5782227cdf5ffcc3d53cf2c75def031 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 厳密に型指定された XML データへの XPathNavigator を使用したアクセス XPath 2.0 データ モデルの一例として、 クラスは、共通言語ランタイム (CLR) 型に対応した厳密に型指定されたデータを含むことができます。 XPath 2.0 のデータ モデルに従い、要素と属性のみが厳密に型指定されたデータを含むことができます。 クラスは、データ型を変換する機構に加えて、厳密に型指定されたデータとして または オブジェクト内のデータにアクセスする機構を提供します。 @@ -28,11 +31,11 @@ XPath 2.0 データ モデルの一例として、XPathNavigator が公開する型情報 DTD、XML スキーマ定義言語 (XSD) のスキーマ、または他の機構を使用して処理しない限り、XML 1.0 データに型はありません。 XML 要素や属性と関連付けられる型情報のカテゴリは多数あります。 -- 単純 CLR 型 : XML スキーマ言語で共通言語ランタイム (CLR) 型を直接サポートするものはありません。 要素や属性の単純コンテンツを最適な CLR 型として見ることができると便利なので、コンテンツをさらに適切な型に細分化する追加のスキーマ情報がない場合、すべての単純コンテンツは として型指定できます。 プロパティを使用することにより、要素と属性の単純コンテンツに最も一致する CLR 型を見つけることができます。 スキーマの組み込み型から CLR 型へのマッピングの詳細については、次を参照してください。 [System.Xml クラスで型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)です。 +- 単純 CLR 型 : XML スキーマ言語で共通言語ランタイム (CLR) 型を直接サポートするものはありません。 要素や属性の単純コンテンツを最適な CLR 型として見ることができると便利なので、コンテンツをさらに適切な型に細分化する追加のスキーマ情報がない場合、すべての単純コンテンツは として型指定できます。 プロパティを使用することにより、要素と属性の単純コンテンツに最も一致する CLR 型を見つけることができます。 スキーマの組み込み型から CLR 型への対応の詳細については、「[System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)」を参照してください。 -- 単純 (CLR) 型のリスト : 単純コンテンツを持つ要素と属性には、空白で区切られた値のリストを含めることができます。 値は XML スキーマで "リスト型" として指定します。 XML スキーマがない場合、こうした単純型は 1 つのテキスト ノードとして取り扱われます。 XML スキーマが使用可能な場合、この単純コンテンツは、各項が CLR オブジェクトの 1 つのコレクションに対応した単純型を持つ、これ以上分割不可能な一連の値として取り扱うことができます。 スキーマの組み込み型から CLR 型へのマッピングの詳細については、次を参照してください。 [System.Xml クラスで型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)です。 +- 単純 (CLR) 型のリスト : 単純コンテンツを持つ要素と属性には、空白で区切られた値のリストを含めることができます。 値は XML スキーマで "リスト型" として指定します。 XML スキーマがない場合、こうした単純型は 1 つのテキスト ノードとして取り扱われます。 XML スキーマが使用可能な場合、この単純コンテンツは、各項が CLR オブジェクトの 1 つのコレクションに対応した単純型を持つ、これ以上分割不可能な一連の値として取り扱うことができます。 スキーマの組み込み型から CLR 型への対応の詳細については、「[System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)」を参照してください。 -- 型指定された値 : スキーマにより検証された単純型の属性と要素は、型指定された値を持ちます。 この値は、数値型、文字列型、または日付型などのプリミティブ型です。 XSD のすべての組み込みの単純型は、単に としてでなく、さらに適当な型としてノードの値にアクセスできる CLR 型と対応をとることができます。 属性や子要素を持つ要素は複合型と考えられます。 単純コンテンツ (子としてテキスト ノードのみ) を持つ複合型の型指定された値は、そのコンテンツの単純型のそれと同じです。 複合コンテンツ (1 つ以上の子要素) を持つ複合型の型指定された値は、 として返されたすべての子テキスト ノードの連結された文字列値です。 スキーマの組み込み型から CLR 型へのマッピングの詳細については、次を参照してください。 [System.Xml クラスで型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)です。 +- 型指定された値 : スキーマにより検証された単純型の属性と要素は、型指定された値を持ちます。 この値は、数値型、文字列型、または日付型などのプリミティブ型です。 XSD のすべての組み込みの単純型は、単に としてでなく、さらに適当な型としてノードの値にアクセスできる CLR 型と対応をとることができます。 属性や子要素を持つ要素は複合型と考えられます。 単純コンテンツ (子としてテキスト ノードのみ) を持つ複合型の型指定された値は、そのコンテンツの単純型のそれと同じです。 複合コンテンツ (1 つ以上の子要素) を持つ複合型の型指定された値は、 として返されたすべての子テキスト ノードの連結された文字列値です。 スキーマの組み込み型から CLR 型への対応の詳細については、「[System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)」を参照してください。 - スキーマ言語固有の型名 : 多くの場合、ノードの値へのアクセスに使用されるのは (外部スキーマを適用したため設定された) CLR 型です。 しかし、XML ドキュメントに適用された特定のスキーマに関連付けられた型を調べる必要がある場合もあります。 たとえば、XML ドキュメントを検索して、添付されたスキーマに従って "PurchaseOrder" 型の内容を持つすべての要素を抽出したいが場合があります。 このような型情報はスキーマ検証の結果としてのみ設定され、この情報には クラスの プロパティと プロパティを通じてアクセスできます。 詳細については、下の「スキーマ検証後の情報セット (PSVI)」のセクションを参照してください。 @@ -54,7 +57,7 @@ XPath 2.0 データ モデルの一例として、|XPath 2.0 の のキャスト規則に従って、 値にキャストされた現在のノードの `xs:integer` 値。| ||XPath 2.0 のキャスト規則に従って、変換先の型にキャストされたノードのコンテンツ。| - スキーマの組み込み型から CLR 型へのマッピングの詳細については、次を参照してください。 [System.Xml クラスで型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)です。 + スキーマの組み込み型から CLR 型への対応の詳細については、「[System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)」を参照してください。 ## スキーマ検証後の情報セット (PSVI) XML スキーマ プロセッサは、XML 情報セットを入力として受け入れ、それをスキーマ検証後の情報セット (PSVI) に変換します。 PSVI は、元の入力 XML 情報セットに新しい情報項目を追加し、新しいプロパティを追加したものです。 によって公開される PSVI 中の XML 情報セットに追加される情報には 3 つの広範なクラスがあります。 @@ -190,14 +193,14 @@ Decimal price = (decimal)navigator.ValueAs(typeof(decimal)); Console.WriteLine("The price of the book has been dropped 20% from {0:C} to {1:C}", navigator.Value, (price - price * (decimal)0.20)); ``` - スキーマの組み込み型から CLR 型へのマッピングの詳細については、次を参照してください。 [System.Xml クラスで型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)です。 + スキーマの組み込み型から CLR 型への対応の詳細については、「[System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)」を参照してください。 -## 関連項目 +## 参照 [System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md) [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) - [XPathNavigator を使用してノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md) - [属性と Namespace XPathNavigator を使用したナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md) - [XPathNavigator による XML データを抽出します。](../../../../docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md) + [XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md) + [XPathNavigator を使用する属性と名前空間のナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md) + [XpathNavigator を使用した XML データの抽出](../../../../docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md) diff --git a/docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md b/docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md index 87b76c2543e..537f3c9b739 100644 --- a/docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md +++ b/docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md @@ -9,18 +9,21 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 23975f88-e0af-4b88-93de-9e20e11880ad -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 45e94954641e935597394b7cf04818c6c78ea675 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2f86abb7da5509a80cceede0f1092a75cef4d8da +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XPathNavigator を使用する属性と名前空間のナビゲーション -クラスには、ナビゲーション メソッドの 2 つのセットが用意されています、最初のセットについては、[ノード セット ナビゲーションを使用して XPathNavigator](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md)トピック、移動に使用される*ノード セット*で、またはオブジェクト。 このトピックで説明されている 2 番目のセットが移動に使用される*属性と名前空間ノード*で、またはオブジェクト。 + クラスは、2 セットの移動メソッドを提供します。「[XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md)」に記載されている最初のセットは または オブジェクト内の*ノード セット*の移動に使用されます。 ここに記載されている 2 つ目のセットは、 または オブジェクト内の*属性ノードと名前空間ノード*の移動に使用されます。 ## 属性ノードの移動 属性は要素のプロパティであり、要素の子ではありません。 兄弟ノード、親ノード、および子ノードの移動には クラスのメソッドが使用されるため、この区別が重要になります。 @@ -103,11 +106,11 @@ ms.lasthandoff: 11/21/2017 > [!NOTE] > クラスは、ドキュメントの逆順で名前空間ノードを返します。 したがって、 は原則的に、現在のスコープ内の最後の名前空間ノードに移動します。 -## 関連項目 +## 参照 [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) - [XPathNavigator を使用してノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md) - [XPathNavigator による XML データを抽出します。](../../../../docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md) - [XPathNavigator による XML データに型指定された厳密にアクセスします。](../../../../docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md) + [XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md) + [XpathNavigator を使用した XML データの抽出](../../../../docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md) + [厳密に型指定された XML データへの XPathNavigator を使用したアクセス](../../../../docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md) diff --git a/docs/standard/data/xml/changing-namespace-declarations-in-an-xml-document.md b/docs/standard/data/xml/changing-namespace-declarations-in-an-xml-document.md index 5540570f79f..3906c5ec46c 100644 --- a/docs/standard/data/xml/changing-namespace-declarations-in-an-xml-document.md +++ b/docs/standard/data/xml/changing-namespace-declarations-in-an-xml-document.md @@ -12,24 +12,27 @@ dev_langs: - csharp - vb ms.assetid: a2758f40-e497-4964-8d8d-1bb68af14dcd -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 627882efcbc41310ee177cba984e4add5b07bd15 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 6db78e689b8529ef62a3b42c2cefb6a5b3d3f02f +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XML ドキュメントの名前空間宣言の変更 -**XmlDocument**名前空間の宣言を公開および**xmlns**属性をドキュメント オブジェクト モデルの一部として使用します。 これらに保存されます、 **XmlDocument**ので、これらの属性の場所を維持して、ドキュメントを保存するときにします。 これらの属性を変更する影響を与えません、**名前**、 **NamespaceURI**、および**プレフィックス**ツリーに既に他のノードのプロパティです。 たとえば、次のドキュメントを読み込む場合、`test`要素には**NamespaceURI**`123.` +**XmlDocument** は、名前空間宣言と **xmlns** 属性をドキュメント オブジェクト モデルの一部として公開します。 名前空間宣言と xmlns 属性は **XmlDocument** に格納されるため、ドキュメントの保存時にはこれらの属性の場所を保持できます。 これらの属性を変更しても、ツリーに既に存在する別のノードの **Name**、**NamespaceURI**、**Prefix** プロパティは影響を受けません。 たとえば、次のドキュメントを読み込むと、`test` 要素の **NamespaceURI** は `123.` になります。 ```xml ``` - 削除する場合、`xmlns`次のように、属性、`test`要素がまだ、 **NamespaceURI**の`123`します。 + その後、次のように `xmlns` 要素を削除しても、`test` 要素の **NamespaceURI** は `123` のまま変わりません。 ```vb doc.documentElement.RemoveAttribute("xmlns") @@ -39,7 +42,7 @@ doc.documentElement.RemoveAttribute("xmlns") doc.documentElement.RemoveAttribute("xmlns"); ``` - 同様に、異なるを追加する場合`xmlns`属性を`doc`要素は、次のように、`test`要素がまだ**NamespaceURI** `123`です。 + 同様に、次のように別の `xmlns` 属性を `doc` 要素に追加しても、`test` 要素の **NamespaceURI** は `123` のまま変わりません。 ```vb doc.documentElement.SetAttribute("xmlns","456"); @@ -49,7 +52,7 @@ doc.documentElement.SetAttribute("xmlns","456"); doc.documentElement.SetAttribute("xmlns","456"); ``` - そのため、変更する`xmlns`属性効果がありませんを保存して再読み込みするまで、 **XmlDocument**オブジェクト。 + つまり、`xmlns` 属性を変更しても、**XmlDocument** オブジェクトを保存して再び読み込むまで、プロパティは影響を受けません。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/changing-namespace-prefix-properties.md b/docs/standard/data/xml/changing-namespace-prefix-properties.md index 8afa54c6e75..1f71a4f4708 100644 --- a/docs/standard/data/xml/changing-namespace-prefix-properties.md +++ b/docs/standard/data/xml/changing-namespace-prefix-properties.md @@ -12,18 +12,21 @@ dev_langs: - csharp - vb ms.assetid: d5c87cbe-4d69-429f-aad5-3103c2ca2770 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 7ce6e4b705188b9c1d0949703991633e3f450689 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3cb0db0fbffa5f42fb09f29da2976727451e3741 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 名前空間プレフィックス プロパティの変更 -**XmlNode**クラスでは、特定のノードに関連付けられている名前空間プレフィックスを変更することができます。 たとえば、要素のプレフィックスを変更するコードを次に示します。 +**XmlNode** クラスを使用すると、特定のノードに関連付けられた名前空間プレフィックスを変更できます。 たとえば、要素のプレフィックスを変更するコードを次に示します。 ```vb Dim doc as XmlDocument = new XmlDocument() @@ -71,7 +74,7 @@ Console.WriteLine(doc.InnerXml); ``` - 呼び出しの結果としての文字列に、ツリーが永続化されるとき**ドキュメント。InnerXml**、`xmlns:a='123'`の名前空間を保持するために属性が追加された、`test`要素。 `'123'` の元の値は `'123'` だったので、そのまま として残ります。 + **doc.InnerXml** の呼び出しの結果としてツリーが文字列に永続化されるとき、`test` 要素の名前空間を保持するために `xmlns:a='123'` という属性が追加されます。 `'123'` の元の値は `'123'` だったので、そのまま として残ります。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/compiled-xpath-expressions.md b/docs/standard/data/xml/compiled-xpath-expressions.md index 43eb5879c30..39db11ba05b 100644 --- a/docs/standard/data/xml/compiled-xpath-expressions.md +++ b/docs/standard/data/xml/compiled-xpath-expressions.md @@ -12,15 +12,18 @@ dev_langs: - csharp - vb ms.assetid: e25dd95f-b64c-4d8b-a3a4-379e1aa0ad55 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 8f7b812d5d6f75e39e9eebcc003686ff88d009e9 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: e6ff5661a7e78f9b37f16acc86834561fc697bcc +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # コンパイルされた XPath 式 オブジェクトは、 クラスの静的 メソッドまたは クラスの メソッドから返されるコンパイル済み XPath クエリを表します。 @@ -44,7 +47,7 @@ ms.lasthandoff: 11/21/2017 次の表では、W3C XPath の戻り型、それに等価の Microsoft .NET Framework 型、および戻り型に応じて オブジェクトで使用できるメソッドについて説明します。 -|W3C XPath の戻り型|.NET Framework の等価の型|説明|メソッド| +|W3C XPath の戻り値の型|.NET Framework の等価の型|説明|メソッド| |---------------------------|------------------------------------|-----------------|-------------| |`Node set`||重複がなく順序付けされていない、ドキュメント順に作成されたノードのコレクション。| または | |`Boolean`||`true` または `false` の値。| または

| @@ -124,15 +127,15 @@ Console.WriteLine(nodes.Current.Value); さらに、選択基準が単純な場合は クラスが提供するノード セット ナビゲーション メソッドは、 クラスが提供する選択メソッドに比べてパフォーマンスが高いことがあります。 たとえば、現在のノードの最初の子を選択する場合、 メソッドを使用した方が `child::*[1]` XPath 式と メソッドを使用するよりも高速です。 - 詳細については、ノードのセットのナビゲーション メソッド、クラスを参照してください[ノード セット ナビゲーションを使用して XPathNavigator](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md)です。 + クラスのノード セット ナビゲーション メソッドの詳細については「[XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md)」を参照してください。 -## 関連項目 +## 参照 [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) - [XPathNavigator による XML データを選択します。](../../../../docs/standard/data/xml/select-xml-data-using-xpathnavigator.md) - [XPathNavigator による XPath 式を評価します。](../../../../docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md) + [XPathNavigator を使用した XML データの選択](../../../../docs/standard/data/xml/select-xml-data-using-xpathnavigator.md) + [XPathNavigator による XPath 式の評価](../../../../docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md) [XPathNavigator によるノードの一致](../../../../docs/standard/data/xml/matching-nodes-using-xpathnavigator.md) [XPath クエリで認識されるノード型](../../../../docs/standard/data/xml/node-types-recognized-with-xpath-queries.md) [XPath クエリおよび名前空間](../../../../docs/standard/data/xml/xpath-queries-and-namespaces.md) diff --git a/docs/standard/data/xml/conversion-of-xml-data-types.md b/docs/standard/data/xml/conversion-of-xml-data-types.md index a4cc2571e1d..99efdcf68aa 100644 --- a/docs/standard/data/xml/conversion-of-xml-data-types.md +++ b/docs/standard/data/xml/conversion-of-xml-data-types.md @@ -12,21 +12,24 @@ dev_langs: - csharp - vb ms.assetid: a2aa99ba-8239-4818-9281-f1d72ee40bde -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: d2f5f5d27b3d21ff12f5eea7613e80e73c5b6597 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d18b69c2d5baeac77cbdf45bebd6f0c9d5c94d9f +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XML データ型の変換 -メソッドの大部分がで見つかった、 **XmlConvert**文字列と厳密に型指定された形式間でデータを変換するクラスを使用します。 これらのメソッドはロケールに依存しません。 つまり、変換の実行時にはロケールの設定は考慮されません。 +**XmlConvert** クラスのメソッドのほとんどは、文字列と厳密に型指定された形式との間のデータ変換に使われます。 これらのメソッドはロケールに依存しません。 つまり、変換の実行時にはロケールの設定は考慮されません。 ## 文字列を型として読み込む - 次の例は、文字列を読み取り、に変換する、 **DateTime**型です。 + 文字列を読み込んで **DateTime** 型に変換するサンプルを次に示します。 入力として次の XML を使用します。 @@ -36,7 +39,7 @@ ms.lasthandoff: 11/21/2017 2001-02-27T11:13:23 ``` - このコードを変換する文字列、 **DateTime**形式。 + 次のコードは、文字列を **DateTime** 形式に変換します。 ```vb reader.ReadStartElement() @@ -51,7 +54,7 @@ Console.WriteLine(vDateTime); ``` ## 文字列を型として書き込む - 次のサンプルの読み取り、 **Int32**文字列に変換します。 + **Int32** を読み込んで文字列に変換するサンプルを次に示します。 入力として次の XML を使用します。 @@ -61,7 +64,7 @@ Console.WriteLine(vDateTime); -2147483648 ``` - このコードは、変換、 **Int32**に、**文字列**: + 次のコードは、**Int32** を **String** に変換します。 ```vb Dim vInt32 As Int32 = -2147483648 @@ -73,6 +76,6 @@ Int32 vInt32=-2147483648; writer.WriteElementString("TestInt32",XmlConvert.ToString(vInt32)); ``` -## 関連項目 - [.NET Framework データ型を文字列に変換します。](../../../../docs/standard/data/xml/converting-strings-to-dotnet-data-types.md) - [.NET Framework の型を文字列に変換します。](../../../../docs/standard/data/xml/converting-dotnet-types-to-strings.md) +## 参照 + [文字列の .NET Framework データ型への変換](../../../../docs/standard/data/xml/converting-strings-to-dotnet-data-types.md) + [.NET Framework 型の文字列への変換](../../../../docs/standard/data/xml/converting-dotnet-types-to-strings.md) diff --git a/docs/standard/data/xml/converting-dotnet-types-to-strings.md b/docs/standard/data/xml/converting-dotnet-types-to-strings.md index 93c31517bde..6cc38031914 100644 --- a/docs/standard/data/xml/converting-dotnet-types-to-strings.md +++ b/docs/standard/data/xml/converting-dotnet-types-to-strings.md @@ -9,22 +9,25 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: dc2e2b65-f623-4dc3-938b-d2a054d6832c -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: c3abe140e62f112a15a1ad1b1b2a79c14364b26d -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 6ca134e13593fdacd759b0000e0e159f76ea067f +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # .NET Framework 型の文字列への変換 -.NET Framework の型を文字列に変換する場合を使用して、 **ToString**メソッドです。 **ToString**メソッドに渡される型の文字列形式を返します。 XML スキーマ (XSD) 仕様に対応する形式で文字列を返す .NET Framework 型を、次の表に示します。 +.NET Framework 型を文字列に変換するには、**ToString** メソッドを使用します。 **ToString** メソッドは、渡された型の文字列表現を返します。 XML スキーマ (XSD) 仕様に対応する形式で文字列を返す .NET Framework 型を、次の表に示します。 |.NET Framework 型|返される文字列型| |-------------------------|--------------------------| -|Boolean|"true"、"false"| +|ブール型|"true"、"false"| |Single.PositiveInfinity|"INF"| |Single.NegativeInfinity|"-INF"| |Double.PositiveInfinity|"INF"| @@ -32,6 +35,6 @@ ms.lasthandoff: 11/21/2017 |DateTime|形式は、yyyy-MM-ddTHH:mm:sszzzzzz およびそのサブセットです。| |Timespan|PnYnMnTnHnMnS の形式。たとえば、`P2Y10M15DT10H30M20S` は 2 年 10 か月 15 日 10 時間 30 分 20 秒の期間です。| -## 関連項目 +## 参照 [XML データ型の変換](../../../../docs/standard/data/xml/conversion-of-xml-data-types.md) - [.NET Framework データ型を文字列に変換します。](../../../../docs/standard/data/xml/converting-strings-to-dotnet-data-types.md) + [文字列の .NET Framework データ型への変換](../../../../docs/standard/data/xml/converting-strings-to-dotnet-data-types.md) diff --git a/docs/standard/data/xml/converting-strings-to-dotnet-data-types.md b/docs/standard/data/xml/converting-strings-to-dotnet-data-types.md index ac485097733..4cebf08da7b 100644 --- a/docs/standard/data/xml/converting-strings-to-dotnet-data-types.md +++ b/docs/standard/data/xml/converting-strings-to-dotnet-data-types.md @@ -12,26 +12,29 @@ dev_langs: - csharp - vb ms.assetid: 65455ef3-9120-412c-819b-d0f59f88ac09 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: ce594234e601cd8feb4723bbc383db9e3ed40522 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d21667ada5592c62824a97b4a8a9b8127abab75a +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 文字列の .NET Framework データ型への変換 -文字列を .NET Framework データ型に変換する場合は、使用、 **XmlConvert**アプリケーション要件に適合するメソッド。 使用できるすべての変換方法の一覧については、 **XmlConvert**クラスを参照してくださいです。 +文字列を .NET Framework データ型に変換するには、アプリケーションの要件に適合する **XmlConvert** メソッドを使用します。 **XmlConvert** クラスで利用可能なすべての変換メソッドの一覧については、「」を参照してください。 - 返される文字列、 **ToString**メソッドは渡されたデータの文字列バージョンです。 さらに、変換を使用していくつかの .NET Framework の型は、 **XmlConvert**クラス内のメソッドを使用していない、 **System.Convert**クラスです。 **XmlConvert**クラスは、XML スキーマ (XSD) データ型仕様に準拠しており、データ型を**XmlConvert**にマップできます。 + **ToString** メソッドから返される文字列は、渡したデータを文字列に変換したものです。 変換に **XmlConvert** クラスを使用する .NET Framework 型の中には、**System.Convert** クラスのメソッドを使用しないものがいくつかあります。 **XmlConvert** クラスは XML Schema (XSD) のデータ型に準拠しており、**XmlConvert** によって変換できるデータ型は決まっています。 - 次の表は、.NET Framework データ型の一覧と、XML スキーマ (XSD) のデータ型マップを使用した場合に返される文字列を示しています。 これらの .NET Framework 型を使用して処理することはできません**System.Convert**です。 + 次の表は、.NET Framework データ型の一覧と、XML スキーマ (XSD) のデータ型マップを使用した場合に返される文字列を示しています。 これらの .NET Framework 型は、**System.Convert** で処理することはできません。 |.NET Framework 型|返される文字列| |-------------------------|---------------------| -|Boolean|"true"、"false"| +|ブール型|"true"、"false"| |Single.PositiveInfinity|"INF"| |Single.NegativeInfinity|"-INF"| |Double.PositiveInfinity|"INF"| @@ -40,9 +43,9 @@ ms.lasthandoff: 11/21/2017 |Timespan|PnYnMnTnHnMnS の形式。つまり、`P2Y10M15DT10H30M20S` は 2 年 10 か月 15 日 10 時間 30 分 20 秒の期間です。| > [!NOTE] -> 文字列を使用して、表に示すいずれかの .NET Framework 型に変換する場合、 **ToString**メソッドで返される文字列は、基本型ですが、XML スキーマ (XSD) 文字列型ではありません。 +> 表中の .NET Framework 型を **ToString** メソッドを使用して文字列に変換したときに返される文字列は基本型ではなく、XML スキーマ (XSD) 文字列型です。 - **DateTime**と**Timespan**こととは異なる値型、 **DateTime**一方で、瞬間を表します、 **TimeSpan**時間間隔を表します。 **DateTime**と**Timespan**形式は、XML スキーマ (XSD) データ型仕様で指定されます。 例: + **DateTime** 値型と **Timespan** 値型の違いは、**DateTime** が瞬間を表すのに対して、**TimeSpan** が時間間隔を表すことです。 **DateTime** および **Timespan** の形式は、XML スキーマ (XSD) のデータ型仕様で指定されています。 例: ```vb Dim writer As New XmlTextWriter("myfile.xml", Nothing) @@ -78,10 +81,10 @@ writer.WriteElementString("Number", XmlConvert.ToString(value)); `200` - ただし、変更する場合は、文字列を**ブール**、**単一**、または**二重**、返される .NET Framework の型を使用する場合に返される型と同じではありません、**System.Convert**クラスです。 + ただし、文字列を **Boolean**、**Single**、または **Double** に変換する場合、返される .NET Framework 型は、**System.Convert** クラスを使用したときに返される型とは異なります。 ## String から Boolean - 次の表は、どのような生成される型、入力文字列を文字列に変換するときに**ブール**を使用して、 **ToBoolean**メソッドです。 + **ToBoolean** メソッドを使用して文字列を **Boolean** に変換するときの入力文字列と生成される型の対応を次の表に示します。 |有効な文字列入力パラメーター|出力される .NET Framework 型| |----------------------------------|--------------------------------| @@ -99,7 +102,7 @@ writer.WriteElementString("Number", XmlConvert.ToString(value)); 1 ``` - 次のコードによって認識できる両方と**bvalue**は**System.Boolean.True**: + いずれも次のコードによって解釈することができ、**bvalue** は **System.Boolean.True** になります。 ```vb Dim bvalue As Boolean = _ @@ -113,7 +116,7 @@ Console.WriteLine(bvalue); ``` ## String から Single - 次の表は、どのような生成される型、入力文字列を文字列に変換するときに、**単一**を使用して、 **ToSingle**メソッドです。 + **ToSingle** メソッドを使用して文字列を **Single** に変換するときの入力文字列と生成される型の対応を次の表に示します。 |有効な文字列入力パラメーター|出力される .NET Framework 型| |----------------------------------|--------------------------------| @@ -121,7 +124,7 @@ Console.WriteLine(bvalue); |"-INF"|Single.NegativeInfinity| ## String から Double - 次の表は、どのような生成される型、入力文字列を文字列に変換するときに、**単一**を使用して、 **ToDouble**メソッドです。 + **ToDouble** メソッドを使用して文字列を **Single** に変換するときの入力文字列と生成される型の対応を次の表に示します。 |有効な文字列入力パラメーター|出力される .NET Framework 型| |----------------------------------|--------------------------------| @@ -140,6 +143,6 @@ Double value = Double.PositiveInfinity; writer.WriteElementString("Infinity", XmlConvert.ToString(value)); ``` -## 関連項目 +## 参照 [XML データ型の変換](../../../../docs/standard/data/xml/conversion-of-xml-data-types.md) - [.NET Framework の型を文字列に変換します。](../../../../docs/standard/data/xml/converting-dotnet-types-to-strings.md) + [.NET Framework 型の文字列への変換](../../../../docs/standard/data/xml/converting-dotnet-types-to-strings.md) diff --git a/docs/standard/data/xml/copy-existing-nodes.md b/docs/standard/data/xml/copy-existing-nodes.md index a429d6f7117..e91f3436e54 100644 --- a/docs/standard/data/xml/copy-existing-nodes.md +++ b/docs/standard/data/xml/copy-existing-nodes.md @@ -9,18 +9,21 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 2aa8f65c-cc62-4638-9c46-129dc15be786 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 11f3915dfebd7ad9d3144c9bedcd7f42b4754359 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c026d9f825375d74d53d5cc46969ff0f713bab1c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 既存のノードのコピー -多くのメソッドとプロパティで、XML ドキュメント オブジェクト モデル (DOM) など、ノードの選択を行うこともできますが**SelectSingleNode**、 **ChildNodes [int i]**、**属性 [int i]**. ノードを選択すると、その特定のノード型で利用できる挿入メソッドを使用してツリーに挿入できます。 ノードをツリーに挿入するときの唯一の制約は、ノードを挿入した後もドキュメントが整形式になっていなければならないことです。 既存のノードを DOM ツリーに挿入すると、そのノードは元の位置から削除され、挿入先の位置に追加されます。 +XML ドキュメント オブジェクト モデル (DOM) には、**SelectSingleNode**、**ChildNodes[int i]**、**Attributes[int i]** など、ノードの選択に使用できるメソッドとプロパティが多数用意されています。 ノードを選択すると、その特定のノード型で利用できる挿入メソッドを使用してツリーに挿入できます。 ノードをツリーに挿入するときの唯一の制約は、ノードを挿入した後もドキュメントが整形式になっていなければならないことです。 既存のノードを DOM ツリーに挿入すると、そのノードは元の位置から削除され、挿入先の位置に追加されます。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/copying-document-fragments.md b/docs/standard/data/xml/copying-document-fragments.md index ed567039f63..13c2093d653 100644 --- a/docs/standard/data/xml/copying-document-fragments.md +++ b/docs/standard/data/xml/copying-document-fragments.md @@ -9,18 +9,21 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: cf424bbe-81b7-40d2-9978-9b727da94d80 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 22d6f70b3317b67255d51690a6c4e262e29d23f9 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: e90af026db0fc190b2c93e4c751de6600e8fd27a +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # ドキュメント フラグメントのコピー -作成することができます、 **XmlDocumentFragment**ノードし、その下にノードを追加します。 ときに、 **XmlDocumentFragment**で挿入、 **InsertNode** 、メソッド、 **XmlDocumentFragment**ノードはコピーされませんが、その子ノードが XML に挿入されますドキュメント オブジェクト モデル (DOM)。 +**XmlDocumentFragment** ノードを作成し、その下にノードを追加できます。 **InsertNode** メソッドを使って **XmlDocumentFragment** を挿入する場合、**XmlDocumentFragment** ノードはコピーされず、その子ノードが XML ドキュメント オブジェクト モデル (DOM) に挿入されます。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/copying-existing-nodes-from-one-document-to-another.md b/docs/standard/data/xml/copying-existing-nodes-from-one-document-to-another.md index fc3dec7019d..18dc4739353 100644 --- a/docs/standard/data/xml/copying-existing-nodes-from-one-document-to-another.md +++ b/docs/standard/data/xml/copying-existing-nodes-from-one-document-to-another.md @@ -9,34 +9,37 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 3caa78c1-3448-4b7b-b83c-228ee857635e -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 0f20e5bd595c8eb49360e58f281a8cf6eda89acf -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 958dccfc184857b0edd12cd1d9afe7b3b468b1e6 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # ドキュメント間での既存のノードのコピー -**ImportNode**メソッドは、ノードまたはノード サブツリー全体をコピーしてから 1 つの機構**XmlDocument**別にします。 呼び出しから返されるノードは、ソース ドキュメントのノードのコピーであり、そこには属性値、ノード名、ノード型が含まれます。さらに、プレフィックス、ローカル名、名前空間 URI (Uniform Resource Identifier) など、名前空間に関連するすべての属性も含まれます。 ソース ドキュメントは変更されません。 インポートしたノードは、ノードを挿入するメソッドの 1 つを使用してツリーに追加する必要があります。 +**ImportNode** メソッドを使用すると、ある **XmlDocument** から別の XmlDocument へ、ノードまたはノードのサブツリー全体をコピーできます。 呼び出しから返されるノードは、ソース ドキュメントのノードのコピーであり、そこには属性値、ノード名、ノード型が含まれます。さらに、プレフィックス、ローカル名、名前空間 URI (Uniform Resource Identifier) など、名前空間に関連するすべての属性も含まれます。 ソース ドキュメントは変更されません。 インポートしたノードは、ノードを挿入するメソッドの 1 つを使用してツリーに追加する必要があります。 - 新しいドキュメントにノードを追加すると、その新しいドキュメントがそのノードを所有します。 これは、ノードが別のドキュメント フラグメントに作成される場合でも、各ノードの作成時には所有元のドキュメントが設定されるためです。 これは、XML ドキュメント オブジェクト モデル (DOM) の要件とに、設計仕様が適用されて、 **XmlDocument**クラスです。 たとえば、 **CreateElement**、新しいノードを作成する唯一の方法です。 + 新しいドキュメントにノードを追加すると、その新しいドキュメントがそのノードを所有します。 これは、ノードが別のドキュメント フラグメントに作成される場合でも、各ノードの作成時には所有元のドキュメントが設定されるためです。 これは XML ドキュメント オブジェクト モデル (DOM) の要件であり、**XmlDocument** クラスの設計仕様です。 たとえば、**CreateElement** は、新しいノードを作成する唯一の手段です。 - インポートされたノード、および値のノードの種類によって、*ディープ*パラメーター、追加情報を適切にコピーされます。 XML では、あるドキュメントから別のドキュメントへ XML ソースまたは HTML ソースのフラグメントをコピーしたときに 2 つのドキュメントのドキュメント型定義 (DTD) が別々になることがありますが、このメソッドでは、その動作を再現しようとします。 + インポートされたノード型と *deep* パラメーターの値によって、必要に応じて追加情報がコピーされます。 XML では、あるドキュメントから別のドキュメントへ XML ソースまたは HTML ソースのフラグメントをコピーしたときに 2 つのドキュメントのドキュメント型定義 (DTD) が別々になることがありますが、このメソッドでは、その動作を再現しようとします。 インポートできるノードの型について、それぞれに固有の動作を次の表に示します。 -|ノード型|*ディープ*パラメーターが true|*ディープ*パラメーターが false| +|ノード型|*deep* パラメーターが true|*deep* パラメーターが false| |---------------|------------------------------|-------------------------------| -|XmlAttribute|に設定されている**true** XmlAttribute でします。 ソースの子孫の**XmlAttribute**は再帰的にインポートし、結果として得られるノード再アセンブルされ、対応するサブツリーが形成されます。|*ディープ*パラメーターには適用されません**XmlAttribute**ノード、インポート時に、その子ノードを常に実行するためです。| +|XmlAttribute| は XmlAttribute で **true** に設定されています。 ソース **XmlAttribute** の子孫は再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。|**XmlAttribute** ノードは常に子ノードと共にインポートされるため、XmlAttribute ノードには *deep* パラメーターは適用されません。| |XmlCDataSection|ノードをそのデータと共にコピーします。|ノードをそのデータと共にコピーします。| |XmlComment|ノードをそのデータと共にコピーします。|ノードをそのデータと共にコピーします。| -|XmlDocumentFragment|ソース ノードの子孫が再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。|空**XmlDocumentFragment**を作成します。| +|XmlDocumentFragment|ソース ノードの子孫が再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。|空の **XmlDocumentFragment** が作成されます。| |XmlDocumentType|ノードがデータと共にコピーされます。*|ノードがデータと共にコピーされます。*| -|XmlElement|ソース要素の子孫が再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。 **注:**既定の属性はコピーされません。 インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。|インポートされたノード、ソース要素の属性と、生成された指定**XmlAttribute**ノードは、新しい要素にアタッチします。 子孫ノードはコピーされません。 **注:**既定の属性はコピーされません。 インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。| -|XmlEntityReference|このメソッドはのみコピー元とコピー先のドキュメントには、エンティティの定義が異なる可能性がある、ため、 **XmlEntityReference**ノード。 置換テキストは含まれません。 インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。|このメソッドはのみコピー元とコピー先のドキュメントには、エンティティの定義が異なる可能性がある、ため、 **XmlEntityReference**ノード。 置換テキストは含まれません。 インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。| +|XmlElement|ソース要素の子孫が再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。 **注:** 既存の属性はコピーされません。 インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。|指定された属性ノードがソース要素からインポートされ、生成された **XmlAttribute** ノードが新しい要素に追加されます。 子孫ノードはコピーされません。 **注:** 既存の属性はコピーされません。 インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。| +|XmlEntityReference|ソース ドキュメントとターゲット ドキュメントではエンティティの定義が異なる可能性があるため、このメソッドは **XmlEntityReference** ノードだけをコピーします。 置換テキストは含まれません。 インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。|ソース ドキュメントとターゲット ドキュメントではエンティティの定義が異なる可能性があるため、このメソッドは **XmlEntityReference** ノードだけをコピーします。 置換テキストは含まれません。 インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。| |XmlProcessingInstruction|インポートされたノードから、ターゲットおよびデータの値がコピーされます。|インポートされたノードから、ターゲットおよびデータの値がコピーされます。| |XmlText|ノードをそのデータと共にコピーします。|ノードをそのデータと共にコピーします。| |XmlSignificantWhitespace|ノードをそのデータと共にコピーします。|ノードをそのデータと共にコピーします。| @@ -45,7 +48,7 @@ ms.lasthandoff: 10/18/2017 |その他のすべてのノード型|これらのノード型はインポートできません。|これらのノード型はインポートできません。| > [!NOTE] -> DocumentType ノードはインポートできますが、1 つのドキュメントは 1 つの DocumentType しか持てません。 したがって、ドキュメント型をインポートした場合は、それをツリーに挿入する前に、ドキュメント内にドキュメント型がないことを確認する必要があります。 ノードの削除方法の詳細については、次を参照してください。[ノードの削除、コンテンツ、および XML ドキュメントから値](../../../../docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md)です。 +> DocumentType ノードはインポートできますが、1 つのドキュメントは 1 つの DocumentType しか持てません。 したがって、ドキュメント型をインポートした場合は、それをツリーに挿入する前に、ドキュメント内にドキュメント型がないことを確認する必要があります。 ノードの削除については、「[XML ドキュメントからのノード、コンテンツ、値の削除](../../../../docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md)」を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/create-new-nodes-in-the-dom.md b/docs/standard/data/xml/create-new-nodes-in-the-dom.md index 2093b3d2a5c..1de52a42ef0 100644 --- a/docs/standard/data/xml/create-new-nodes-in-the-dom.md +++ b/docs/standard/data/xml/create-new-nodes-in-the-dom.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 6c2b9789-b61a-49f9-b33f-db01a945edf2 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: ec624a02f98fda4352b5ba8ff43681fba040c676 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 195c0f8184bbbd84826def87ce74daa49965cb93 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # DOM への新しいノードの作成 には、すべてのノード型に対応する Create メソッドがあります。 このメソッドに、名前が必要な場合は名前を渡し、コンテンツを持つノードではコンテンツやその他のパラメーターを指定すると、そのノードが作成されます。コンテンツを持つノードには、たとえばテキスト ノードがあります。 次のメソッドは、ノードを適切に作成するために、名前といくつかのパラメーターの指定が必要なメソッドです。 @@ -46,17 +49,17 @@ ms.lasthandoff: 10/18/2017 その他のノード型では、パラメーターにデータを与えるだけでなく、他の要件を満たす必要もあります。 - 属性については、次を参照してください。 [DOM の要素の新しい属性の作成](../../../../docs/standard/data/xml/creating-new-attributes-for-elements-in-the-dom.md)です。 要素と属性名の検証については、次を参照してください。 [XML 要素と属性名の検証を作成するときに新しいノード](../../../../docs/standard/data/xml/xml-element-and-attribute-name-verification-when-creating-new-nodes.md)です。 エンティティ参照を作成するには、次を参照してください。[新しいエンティティ参照の作成](../../../../docs/standard/data/xml/creating-new-entity-references.md)です。 エンティティ参照の展開の名前空間の影響については、次を参照してください。 [Namespace に影響を及ぼす新しいノードを含む要素と属性のエンティティ参照の展開](../../../../docs/standard/data/xml/namespace-affect-on-entity-ref-expansion-for-new-nodes.md)です。 + 属性の詳細については、「[DOM の要素に対する新しい属性の作成](../../../../docs/standard/data/xml/creating-new-attributes-for-elements-in-the-dom.md)」を参照してください。 要素名と属性名の検証については、「[新しいノードの作成時における XML 要素名および属性名の検証](../../../../docs/standard/data/xml/xml-element-and-attribute-name-verification-when-creating-new-nodes.md)」を参照してください。 エンティティ参照の作成については、「[新しいエンティティ参照の作成](../../../../docs/standard/data/xml/creating-new-entity-references.md)」を参照してください。 エンティティ参照の展開における名前空間の影響については、「[要素と属性を含む新しいノードでのエンティティ参照の展開に対する名前空間の影響](../../../../docs/standard/data/xml/namespace-affect-on-entity-ref-expansion-for-new-nodes.md)」を参照してください。 新しく作成したノードをツリーに挿入するには、いくつかのメソッドを使用できます。 使用できるメソッドと、そのメソッドによって DOM のどこに新しいノードが作成されるかの説明を次の表に示します。 |メソッド|ノードの位置| |------------|--------------------| ||参照ノードの前に挿入されます。 たとえば、5 番目の位置に新しいノードを挿入するには、次のようにします。

`Dim refChild As XmlNode = node.ChildNodes(4) 'The reference is zero-based.node.InsertBefore(newChild, refChild);`

`XmlNode refChild = node.ChildNodes[4]; //The reference is zero-based. node.InsertBefore(newChild, refChild);`

詳細については、 メソッドを参照してください。| -||参照ノードの後に挿入されます。 次に例を示します。

`node.InsertAfter(newChild, refChild)`

`node.InsertAfter(newChild, refChild);`

詳細については、 メソッドを参照してください。| +||参照ノードの後に挿入されます。 例:

`node.InsertAfter(newChild, refChild)`

`node.InsertAfter(newChild, refChild);`

詳細については、 メソッドを参照してください。| ||当該ノードの子ノードのリストの末尾にノードを追加します。 追加するノードが の場合は、ドキュメント フラグメントの内容全体がこのノードの子リストに移動されます。 詳細については、 メソッドを参照してください。| ||当該ノードの子ノードのリストの先頭にノードを追加します。 追加するノードが の場合は、ドキュメント フラグメントの内容全体がこのノードの子リストに移動されます。 詳細については、 メソッドを参照してください。| ||要素に関連付けられている属性コレクションの末尾に ノードを追加します。 詳細については、 メソッドを参照してください。| -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/creating-new-entity-references.md b/docs/standard/data/xml/creating-new-entity-references.md index 2154a8b430e..20542ccfde1 100644 --- a/docs/standard/data/xml/creating-new-entity-references.md +++ b/docs/standard/data/xml/creating-new-entity-references.md @@ -9,25 +9,28 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: a42f81b3-0403-4e34-b346-7d2129804e54 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 22e9b66f58275141cf9da154573ca43a0b90affc -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 76093fbe7095c2aae7caa69147f6181c292ca734 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 新しいエンティティ参照の作成 -**CreateEntityReference**メソッドが新たに作成**XmlEntityReference**ノード。 XML ドキュメント オブジェクト モデル (DOM) は、参照されているエンティティ名が既に宣言されているかどうかを確認します。 場合は、子ノード**XmlEntityReference**ノードは、エンティティ宣言ノードからコピーします。 一致するエンティティ宣言がない場合、エンティティ参照ノードには、唯一の子として空のテキスト ノードが追加されます。 の子ノード、 **XmlEntityReference**ノードは他のノードのコピーであり、これらの子ノードは読み取り専用と変更できません。 +**CreateEntityReference** メソッドによって新しい **XmlEntityReference** ノードを作成できます。 XML ドキュメント オブジェクト モデル (DOM) は、参照されているエンティティ名が既に宣言されているかどうかを確認します。 宣言されている場合は、エンティティ宣言ノードから **XmlEntityReference** ノードの子ノードがコピーされます。 一致するエンティティ宣言がない場合、エンティティ参照ノードには、唯一の子として空のテキスト ノードが追加されます。 **XmlEntityReference** ノードの子ノードは別のノードのコピーなので、これらの子ノードは読み取り専用になり、変更はできません。 ノードがコピーされるとき、そのエンティティ参照が存在する位置のスコープに、名前空間が適用されていることがあります。 生成される要素ノードまたは属性ノードの構成は、この名前空間の影響を受けます。 > [!NOTE] -> DOM は子ノードを追加、 **EntityReference**のみを挿入するとき、 **EntityReference**ドキュメントにノードです。 新しく作成された**EntityReference**子ノードを持つノードがありません。 +> DOM は、ドキュメントに **EntityReference** ノードが挿入されたときだけ **EntityReference** に子ノードを追加します。 新しく作成された **EntityReference** ノードには、子ノードはありません。 - 場合でも、 **XmlDataDocument**の派生クラスには、 **XmlDocument**、 **XmlDataDocument**エンティティ参照の作成をサポートしていません。 これは、ため**EntityReference**子は読み取り専用です。 子、 **EntityReference**ノードが複数の地域にまたがることができます。 ここでは、行の一部の一部を含む領域に関連付けられている、 **EntityReference**読み取り専用になります。 + **XmlDataDocument** は **XmlDocument** の派生クラスですが、**XmlDataDocument** はエンティティ参照の作成をサポートしていません。 **EntityReference** の子が読み取り専用であるためです。 **EntityReference** ノードの子の範囲は、複数の領域にまたがることができます。 この場合は、**EntityReference** の一部を含む領域と関連付けられている行の部分が読み取り専用になります。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/dynamic-updates-to-nodelists-and-namednodemaps.md b/docs/standard/data/xml/dynamic-updates-to-nodelists-and-namednodemaps.md index 47262a9e5ef..7127668f0bd 100644 --- a/docs/standard/data/xml/dynamic-updates-to-nodelists-and-namednodemaps.md +++ b/docs/standard/data/xml/dynamic-updates-to-nodelists-and-namednodemaps.md @@ -9,18 +9,21 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 76c511fd-6704-4ca4-8078-860a68d898ad -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 459d746ff278ac4affa0318c1fad0aeb6a73e560 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 8a7abbb7344530ca993b8d07b774da17e6d0349b +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # NodeLists および NamedNodeMaps の動的更新 -**XmlNodeList**と**XmlNamedNodeMap** XML ドキュメントがメモリに読み込まれますが変更されている、まだ、ノードのセットを含む、World Wide Web コンソーシアム (W3C) の状態をこれらのオブジェクト動的であるノードの必要性の設定が含まれているとします。 つまり、基になっているドキュメントが変更されたら、これら 2 つのオブジェクトも変更される必要があります。 したがってがある場合、 **XmlNodeList**特定の要素 (たとえば、要素 X) のすべての子要素を格納している、要素 X 下のドキュメントに要素 Q は、要素を追加します。**XmlNodeList**その新しい要素 Q をそのコレクションに追加された必要もあります。 逆の場合も同様です。 ノードが追加された場合、 **XmlNodeList**、基になるドキュメントが同様に更新します。 +**XmlNodeList** と **XmlNamedNodeMap** にはノード セットが格納されますが、XML ドキュメントはメモリに読み込まれ、変更されるため、W3C (World Wide Web Consortium) では、ノード セットが格納されるこれらのオブジェクトは動的でなければならないと規定しています。 つまり、基になっているドキュメントが変更されたら、これら 2 つのオブジェクトも変更される必要があります。 したがって、特定の要素 (たとえば要素 X) のすべての子要素が **XmlNodeList** に格納されている場合、別の要素である要素 Q は、要素 X の下のドキュメントに追加されます。**XmlNodeList** のコレクションにも、その新しい要素 Q を追加する必要があります。 逆の場合も同様です。 **XmlNodeList** にノードが追加された場合は、基になっているドキュメントも同様に更新されます。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/editing-xml-schemas.md b/docs/standard/data/xml/editing-xml-schemas.md index 10ad66e8750..1b36e18edb2 100644 --- a/docs/standard/data/xml/editing-xml-schemas.md +++ b/docs/standard/data/xml/editing-xml-schemas.md @@ -13,15 +13,18 @@ dev_langs: - vb - cpp ms.assetid: fa09c8e5-c2b9-49d2-bb0d-40330cd13e4d -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: b9505f60b2000ef227463404dab051ecb7fa3cc5 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: dd2c5a0e4625a348daad9eccb7bae0e4788cab71 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XML スキーマの編集 XML スキーマの編集は、スキーマ オブジェクト モデル (SOM) の最も重要な機能の 1 つです。 XML スキーマの既存の値を変更する場合、SOM のスキーマ コンパイル前のすべてのプロパティを使用できます。 その後、XML スキーマを再コンパイルすると、変更が反映されます。 @@ -29,7 +32,7 @@ XML スキーマの編集は、スキーマ オブジェクト モデル (SOM) SOM に読み込まれたスキーマを編集する場合、最初にスキーマの走査を行います。 スキーマを編集する際には、事前に SOM API を使用したスキーマの走査をよく理解しておく必要があります。 また、スキーマのコンパイル後の情報セット (PSCI) のうち、スキーマのコンパイル前のプロパティとコンパイル後のプロパティについてもよく理解しておく必要があります。 ## XML スキーマの編集 - このセクションでは、2 つのコード例が提供される、どちらのスキーマを編集する顧客で作成した、 [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)トピックです。 最初のコード サンプルは、`PhoneNumber` 要素に新しい `Customer` 要素を追加します。2 番目のコード サンプルは、`Title` 要素に新しい `FirstName` 属性を追加します。 また、最初のサンプルは、スキーマのコンパイル前の コレクションをカスタム スキーマを走査する手段として使用しますが、2 番目のコード サンプルはスキーマのコンパイル後の コレクションを使用します。 + このセクションには、2 種類のコード サンプルが用意されています。これらはいずれも「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」トピックで作成したカスタム スキーマを編集します。 最初のコード サンプルは、`PhoneNumber` 要素に新しい `Customer` 要素を追加します。2 番目のコード サンプルは、`Title` 要素に新しい `FirstName` 属性を追加します。 また、最初のサンプルは、スキーマのコンパイル前の コレクションをカスタム スキーマを走査する手段として使用しますが、2 番目のコード サンプルはスキーマのコンパイル後の コレクションを使用します。 ### PhoneNumber 要素の例 この最初のコード サンプルでは、カスタム スキーマの `PhoneNumber` 要素に新しい `Customer` 要素を追加します。 このコード サンプルでは、次の手順でカスタム スキーマの編集を行います。 @@ -54,7 +57,7 @@ XML スキーマの編集は、スキーマ オブジェクト モデル (SOM) [!code-csharp[XmlSchemaEditExample1#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaEditExample1/CS/XmlSchemaEditExample1.cs#1)] [!code-vb[XmlSchemaEditExample1#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaEditExample1/VB/XmlSchemaEditExample1.vb#1)] - 作成、変更されたカスタム スキーマを次に示します、 [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)トピックです。 + 変更後のカスタム スキーマ (「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」トピックで作成) を次に示します。 ```xml @@ -118,7 +121,7 @@ XML スキーマの編集は、スキーマ オブジェクト モデル (SOM) [!code-csharp[XmlSchemaEditExample2#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaEditExample2/CS/XmlSchemaEditExample2.cs#1)] [!code-vb[XmlSchemaEditExample2#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaEditExample2/VB/XmlSchemaEditExample2.vb#1)] - 作成、変更されたカスタム スキーマを次に示します、 [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)トピックです。 + 変更後のカスタム スキーマ (「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」トピックで作成) を次に示します。 ```xml @@ -142,11 +145,11 @@ XML スキーマの編集は、スキーマ オブジェクト モデル (SOM) ``` -## 関連項目 +## 参照 [XML スキーマ オブジェクト モデルの概要](../../../../docs/standard/data/xml/xml-schema-object-model-overview.md) [XML スキーマの読み取りと書き込み](../../../../docs/standard/data/xml/reading-and-writing-xml-schemas.md) [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md) [XML スキーマの走査](../../../../docs/standard/data/xml/traversing-xml-schemas.md) - [インクルードまたは XML スキーマのインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) - [スキーマのコンパイルのための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) - [スキーマ コンパイル後の Infoset](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) + [XML スキーマのインクルードまたはインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマのコンパイル後の情報セット](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) diff --git a/docs/standard/data/xml/entity-references-are-expanded-and-not-preserved.md b/docs/standard/data/xml/entity-references-are-expanded-and-not-preserved.md index 112ea58df21..b1a450ab4a9 100644 --- a/docs/standard/data/xml/entity-references-are-expanded-and-not-preserved.md +++ b/docs/standard/data/xml/entity-references-are-expanded-and-not-preserved.md @@ -9,25 +9,28 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: ffd97806-ab43-4538-8de2-5828bfbbde57 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 069d3b94a0269917400e75fdbe975ec39dcfdb71 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 00b997865c614756ea5fd9567ded3baa469f4c62 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 保持されずに展開されるエンティティ参照 -エンティティ参照が展開され、それが表すテキストに置き換え場合に、 **XmlEntityReference**ノードは作成されません。 代わりに、エンティティ宣言が解析されの代わりに、宣言のコンテンツから作成されたノードをコピー、 **XmlEntityReference**です。 そのためで、`&publisher;`例では、`&publisher;`は保存されず、代わりに、 **XmlText**ノードを作成します。 +エンティティ参照が展開され、それが表すテキストに置き換えられる場合には、**XmlEntityReference** ノードは作成されません。 この場合はエンティティ宣言が解析され、宣言のコンテンツから作成されたノードが **XmlEntityReference** の代わりにコピーされます。 したがって、`&publisher;` の例では、`&publisher;` は保存されず、代わりに **XmlText** ノードが作成されます。 - ![ツリー構造を展開](../../../../docs/standard/data/xml/media/xmlentityref-expanded-nodes.gif "xmlentityref_expanded_nodes") + ![展開されたツリー構造](../../../../docs/standard/data/xml/media/xmlentityref-expanded-nodes.gif "xmlentityref_expanded_nodes") エンティティ参照が展開される場合のツリー構造 `B` や `<` などの文字エンティティは保持されません。 文字エンティティは常に展開され、テキスト ノードとして表されます。 - 保持するために**XmlEntityReference**ノードとエンティティ参照の子ノードが接続して、設定、 **EntityHandling**フラグを**ExpandCharEntities**です。 それ以外の場合のままにして、 **EntityHandling**フラグを既定値、つまりを**ExpandEntities**です。 その場合、DOM ではエンティティ参照ノードが認識されません。 エンティティ参照ノードは、エンティティ宣言の子ノードのコピーに置き換えられます。 + **XmlEntityReference** ノードと、それに付随するエンティティ参照の子ノードを保持するには、**EntityHandling** フラグを **ExpandCharEntities** に設定します。 それ以外の場合は、**EntityHandling** フラグを既定の **ExpandEntities** のままにしておきます。 その場合、DOM ではエンティティ参照ノードが認識されません。 エンティティ参照ノードは、エンティティ宣言の子ノードのコピーに置き換えられます。 エンティティ参照を保持しない場合の副作用の 1 つとして、そのドキュメントを保存して別のアプリケーションに渡したとき、受け取る側のアプリケーションでは、エンティティ参照によってノードが生成されたことを識別できないという点があります。 しかし、エンティティ参照を保持する場合は、受け取り側アプリケーションがエンティティ参照を認識し、子ノードを読み取ります。 子ノードが、エンティティ宣言に含まれていた情報を表していることは明らかです。 たとえば、エンティティ参照が保持される場合、DOM の構造は理論的に次のようになります。 @@ -43,9 +46,9 @@ ms.lasthandoff: 10/18/2017 XmlText: Microsoft Press - エンティティ参照ノードが削除され、受信側のアプリケーションに指示することはできないことに注意してください、 **XmlText**エンティティ宣言から作成された"Microsoft Press"を含むノードです。 + エンティティ参照がないため、受け取る側のアプリケーションでは、"Microsoft Press" を含む **XmlText** ノードがエンティティ宣言から作成されたことを識別できません。 - エンティティを解決できないリーダーを使用する場合、**ロード**エンティティ参照を検出すると、メソッドが例外をスローします。 + エンティティを解決できないリーダーを使用すると、**Load** メソッドは、エンティティ参照を見つけたときに例外をスローします。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/entity-references-are-preserved.md b/docs/standard/data/xml/entity-references-are-preserved.md index 4fe5d6261ec..852e2b87e9a 100644 --- a/docs/standard/data/xml/entity-references-are-preserved.md +++ b/docs/standard/data/xml/entity-references-are-preserved.md @@ -9,18 +9,21 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 000a6cae-5972-40d6-bd6c-a9b7d9649b3c -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 770c714e8f5942ea733c417ae9b06f69e4acf1a5 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f5a867d1301355f4c9a77654556229274f96d00c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 保持されるエンティティ参照 -エンティティ参照が展開せずに保持されます、XML ドキュメント オブジェクト モデル (DOM) をビルド、 **XmlEntityReference**ノード、エンティティ参照を検出するとします。 +エンティティ参照を展開せずに保持する場合、XML ドキュメント オブジェクト モデル (DOM) は、エンティティ参照を検出すると **XmlEntityReference** ノードを構築します。 たとえば、次の XML を使用します。 @@ -29,17 +32,17 @@ ms.lasthandoff: 10/18/2017 Published by &publisher; ``` - DOM のビルド、 **XmlEntityReference**ノードに到達したときに、`&publisher;`参照します。 **XmlEntityReference**エンティティ宣言のコンテンツからコピーされた子ノードが含まれています。 ため、上記のコード例に、エンティティ宣言内のテキストが含まれています、 **XmlText**エンティティ参照ノードの子ノードとしてノードを作成します。 + DOM は、`&publisher;` 参照を検出すると **XmlEntityReference** ノードを構築します。 **XmlEntityReference** には、エンティティ宣言のコンテンツからコピーされた子ノードが格納されます。 上記のコード サンプルでは、エンティティ宣言にテキストが含まれているため、エンティティ参照ノードの子ノードとして **XmlText** ノードが作成されます。 - ![ツリー構造が保持されているエンティティ参照の](../../../../docs/standard/data/xml/media/xmlentityref-notexpanded-nodes.gif "xmlentityref_notexpanded_nodes") + ![保持されているエンティティ参照のツリー構造](../../../../docs/standard/data/xml/media/xmlentityref-notexpanded-nodes.gif "xmlentityref_notexpanded_nodes") エンティティ参照が保持される場合のツリー構造 - 子ノード、 **XmlEntityReference**ノードから作成されたすべての子のコピーである、 **XmlEntity**ノード、エンティティ宣言が発生したとき。 + **XmlEntityReference** の子ノードは、エンティティ宣言が検出されたときに **XmlEntity** ノードから作成されたすべての子ノードのコピーです。 > [!NOTE] -> コピーされたノード、 **XmlEntity**常に、エンティティ参照ノードの下に配置される正確なコピーではありません。 エンティティ参照ノードが現れた位置のスコープに名前空間が適用されていると、それが子ノードの最終的な構成に影響する可能性があります。 +> **XmlEntity** からコピーされたノードは、エンティティ参照ノードの下に配置されると、必ずしも元のノードの完全なコピーにはなりません。 エンティティ参照ノードが現れた位置のスコープに名前空間が適用されていると、それが子ノードの最終的な構成に影響する可能性があります。 - 既定では、一般エンティティと同様に`&abc;`は保持されますと**XmlEntityReference**ノードは常に作成します。 + 既定では、`&abc;` のような一般エンティティは保持され、常に **XmlEntityReference** ノードが作成されます。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md b/docs/standard/data/xml/event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md index 7f2c537e048..0d92a741f99 100644 --- a/docs/standard/data/xml/event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md +++ b/docs/standard/data/xml/event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md @@ -12,20 +12,23 @@ dev_langs: - csharp - vb ms.assetid: 0fe844e3-5b6f-4fe7-ad15-22459501738b -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 2bfd6eee5831b6bb92c0274fe5925184c80a92e2 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: cc74b13fd4771cc4f00500ff3253795f45db2b40 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XmlNodeChangedEventArgs による XML ドキュメントのイベント処理 -**XmlNodeChangedEventArgs**に登録されたイベント ハンドラーに渡される引数をカプセル化、 **XmlDocument**イベントを処理するオブジェクト。 各イベントとその発生するタイミングを次の表に示します。 +イベント処理のために **XmlDocument** オブジェクトに登録されたイベント ハンドラーでは、渡された引数が **XmlNodeChangedEventArgs** によってカプセル化されます。 各イベントとその発生するタイミングを次の表に示します。 -|Event|発生するタイミング| +|event|発生するタイミング| |-----------|-----------| ||現在のドキュメントに属するノードが別のノードに挿入されるとき。| ||現在のドキュメントに属するノードが別のノードに挿入されたとき。| @@ -35,7 +38,7 @@ ms.lasthandoff: 10/18/2017 ||ノードの値が変更されたとき。| > [!NOTE] -> 場合、 **XmlDataDocument**を使用する最適化が完全にメモリ使用量**データセット**、ストレージ、 **XmlDataDocument**の変更時に、上記のイベントを発生させません可能性があります基になるに加えられた**データセット**です。 これらのイベントを必要がある場合は、全体を走査する必要があります**XmlDocument**最適化が完全でないメモリ使用量を 1 回です。 +> **XmlDataDocument** のメモリの用途が **DataSet** ストレージの利用に完全に最適化されている場合は、基になる **DataSet** が変更された場合でも、**XmlDataDocument** では上に示したどのイベントも発生しない場合があります。 これらのイベントが必要な場合は、**XmlDocument** 全体を 1 回走査して、メモリ使用の最適化が完全でない状態にします。 イベント ハンドラーを定義する方法、およびイベント ハンドラーをイベントに追加する方法を次のコード サンプルに示します。 @@ -80,9 +83,9 @@ void NodeInsertedHandler(Object src, XmlNodeChangedEventArgs args) } ``` - XML ドキュメント オブジェクト モデル (DOM) の操作の中には、複数のイベントが発生する複合操作があります。 たとえば、 **AppendChild**以前の親から追加するノードを削除することもできます。 この場合、表示、 **NodeRemoved**最初に、発生したイベントが続く、 **NodeInserted**イベント。 設定する操作など**InnerXml**複数のイベントが発生する可能性があります。 + XML ドキュメント オブジェクト モデル (DOM) の操作の中には、複数のイベントが発生する複合操作があります。 たとえば **AppendChild** では、追加されるノードを以前の親から削除する必要が生じることがあります。 この場合は、最初に **NodeRemoved** イベントが発生し、次に **NodeInserted** イベントが発生します。 **InnerXml** を設定する操作なども、複数のイベントが発生する結果になります。 - イベント ハンドラーの作成との処理は、次のコード例を示しています、 **NodeInserted**イベント。 + イベント ハンドラーを作成する方法および **NodeInserted** イベントを処理する方法を次のコード サンプルに示します。 ```vb Imports System @@ -215,5 +218,5 @@ public class Sample 詳細については、 および を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/extending-the-dom.md b/docs/standard/data/xml/extending-the-dom.md index e8271277008..d4515fbdff6 100644 --- a/docs/standard/data/xml/extending-the-dom.md +++ b/docs/standard/data/xml/extending-the-dom.md @@ -12,18 +12,21 @@ dev_langs: - csharp - vb ms.assetid: b5489c96-4afd-439a-a25d-fc82eb4a148d -caps.latest.revision: "5" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: b91c49be9268d8dc967daeac116cf67b2ed7d742 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 06cac8d76b17f3ef32931ea21d0556085f05d7b1 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # DOM の拡張 -Microsoft .NET Framework には、XML ドキュメント オブジェクト モデル (DOM) の実装を提供するクラスの基本セットが含まれています。 およびその派生クラスのメソッドとプロパティを利用して、XML ドキュメントの内容および構造の中で移動し、それらに対してクエリを実行し、それらを変更することができます。 +Microsoft .NET Framework は、XML ドキュメント オブジェクト モデル (DOM) の実装を提供するクラスの基本セットを備えています。 およびその派生クラスのメソッドとプロパティを利用して、XML ドキュメントの内容および構造の中で移動し、それらに対してクエリを実行し、それらを変更することができます。 DOM を使用して XML コンテンツをメモリに読み込むと、作成されたノードには、ノード名やノード型などの情報が格納されます。 場合によっては、基本クラスによっては提供されない特定のノード情報が必要になることもあります。 たとえば、ノードの行番号と位置が必要な場合です。 このような場合は、既存の DOM クラスから新しいクラスを派生させ、追加機能を持たせることができます。 @@ -250,10 +253,10 @@ Number of elements in book.xml: 3 イベント処理プロセスは、派生クラスでも、元の DOM クラスとまったく同じように動作します。 - ノードのイベント処理の詳細については、次を参照してください。[イベント](../../../../docs/standard/events/index.md)とです。 + ノード イベント処理については、「[イベント](../../../../docs/standard/events/index.md)」と「」を参照してください。 ## 既定の属性と CreateElement メソッド - 派生クラスの メソッドをオーバーライドした場合は、ドキュメントの編集中に新しい要素を作成しても、既定の属性は追加されません。 これは編集中だけの問題です。 メソッドが既定の属性を に追加する機能を実行するため、この機能は メソッドにコーディングする必要があります。 既定の属性が含まれた を読み込めば、既定の属性が正しく処理されます。 既定の属性の詳細については、次を参照してください。 [DOM の要素の新しい属性の作成](../../../../docs/standard/data/xml/creating-new-attributes-for-elements-in-the-dom.md)です。 + 派生クラスの メソッドをオーバーライドした場合は、ドキュメントの編集中に新しい要素を作成しても、既定の属性は追加されません。 これは編集中だけの問題です。 メソッドが既定の属性を に追加する機能を実行するため、この機能は メソッドにコーディングする必要があります。 既定の属性が含まれた を読み込めば、既定の属性が正しく処理されます。 既定の属性の詳細については、「[DOM の要素に対する新しい属性の作成](../../../../docs/standard/data/xml/creating-new-attributes-for-elements-in-the-dom.md)」を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md b/docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md index 323a1034045..157996481a3 100644 --- a/docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md +++ b/docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md @@ -9,19 +9,22 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: d2758ea1-03f6-47bd-88d2-0fb7ccdb2fab -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 7b6c81a5737b879b7c1356c4b9c2ab68fbbc4688 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 98ad31039b5351a7dc4aa3cf033ae8cd0f896b7b +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XslTransform クラスの随意動作の実装 > [!NOTE] -> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 随意動作とは、W3C (World Wide Web Consortium) 勧告『XSL Transformations (XSLT) Version 1.0』(www.w3.org/TR/xslt) で列挙されている動作で、ある状況に対処する手段として、実装プロバイダーが複数のオプションから 1 つ選択するものです。 たとえば、W3C Recommendation は、セクション 7.3「Creating Processing Instructions」で、`xsl:processing-instruction` の内容をインスタンス化したときに、テキスト ノード以外のノードが作成されるのはエラーであるとしています。 いくつかの問題に関しては、プロセッサがエラー状態から回復するときにどのような対処をするべきかを、W3C が規定しています。 セクション 7.3 に記述されている問題に関しては、W3C では、作成されたノードとその内容を無視することで、このエラーから回復できるとしています。 @@ -40,7 +43,7 @@ ms.lasthandoff: 11/21/2017 |`xsl:processing-instruction` 名前属性が NCName (コロンが含まれていない名前) も処理命令ターゲットも生成しない。|復元|7.3| |`xsl:processing-instruction` の内容をインスタンス化すると、テキスト ノード以外のノードが作成される。|復元|7.3| |`xsl:processing-instruction` の内容をインスタンス化した結果に文字列 "`?>`" が含まれている。|復元|7.3| -|内容をインスタンス化した結果、`xsl:comment`文字列が含まれています"-"、または末尾"-"です。|復元|7.4| +|`xsl:comment` の内容をインスタンス化した結果に文字列 "--" が含まれているか、結果が "-" で終了している。|復元|7.4| |`xsl:comment` の内容をインスタンス化した結果、テキスト ノード以外のノードが作成される。|復元|7.4| |変数バインディング要素内のテンプレートが属性ノードまたは名前空間ノードを返す。|復元|11.2| |document 関数に渡された URI からのリソースの取得時にエラーが発生する。|例外をスロー|12.1| @@ -68,12 +71,12 @@ ms.lasthandoff: 11/21/2017 - 言語については、`xsl:sort.` で指定されていない特定の言語での並べ替え動作がプロセッサによって異なる場合があります。 - 次の表を使用して、変換の .NET Framework の実装で各データ型に対して実装されている並べ替え動作です。 + を使用した変換の .NET Framework の実装で各データ型に対して実装されている並べ替え動作を次の表に示します。 -|データ型|並べ替え動作| +|データの種類|並べ替え動作| |---------------|----------------------| |Text|データは、共通言語ランタイム (CLR: Common Language Runtime) の String.Compare メソッドとカルチャ ロケールを使用して並べ替えられます。 データ型が "テキスト" である場合、 クラスの並べ替え動作は、CLR の文字列比較動作と同じです。| -|Number|数値は、XPath (XML Path Language) 数値として処理され、W3C 勧告『XML Path Language (XPath) Version 1.0』のセクション 3.5 (www.w3.org/TR/xpath.html#numbers) に記述されている方法に従って並べ替えられます。| +|数値|数値は、XPath (XML Path Language) 数値として処理され、W3C 勧告『XML Path Language (XPath) Version 1.0』のセクション 3.5 (www.w3.org/TR/xpath.html#numbers) に記述されている方法に従って並べ替えられます。| ## サポートされているオプション機能 XSLT プロセッサがオプションで実装する機能を次に示します。これらの機能は、 クラスに実装されます。 @@ -82,10 +85,10 @@ ms.lasthandoff: 11/21/2017 |-------------|------------------------|-----------| |`disable-output-escaping` タグと `` タグの `` 属性|W3C 勧告『XSLT 1.0』

セクション 16.4|`disable-output-escaping` 要素または `xsl:text` 要素が `xsl:value-of`、`xsl:comment`、または `xsl:processing-instruction` のいずれかの要素で使用される場合、`xsl:attribute` 属性は無視されます。

テキストが含まれた結果ツリー フラグメントおよびエスケープされたテキスト出力はサポートされません。

オブジェクトまたは オブジェクトへの変換時には、disable-output-escaping 属性が無視されます。| -## 関連項目 +## 参照 - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) - [XslTransform クラスによる XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) [変換における XPathNavigator](../../../../docs/standard/data/xml/xpathnavigator-in-transformations.md) [変換における XPathNodeIterator](../../../../docs/standard/data/xml/xpathnodeiterator-in-transformations.md) [XslTransform への XPathDocument の入力](../../../../docs/standard/data/xml/xpathdocument-input-to-xsltransform.md) diff --git a/docs/standard/data/xml/including-or-importing-xml-schemas.md b/docs/standard/data/xml/including-or-importing-xml-schemas.md index 4256ea7ead2..dd59bb85ecf 100644 --- a/docs/standard/data/xml/including-or-importing-xml-schemas.md +++ b/docs/standard/data/xml/including-or-importing-xml-schemas.md @@ -13,21 +13,24 @@ dev_langs: - vb - cpp ms.assetid: fe1b4a11-37f4-4e1a-93c9-239f4fe736c0 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: d3b336b0ac4ca4fd02950a572404a117d4c193f2 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a8c9b513f47fcb07f987b1e17f0b7f485cef3143 +ms.sourcegitcommit: 91691981897cf8451033cb01071d8f5d94017f97 ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/09/2018 --- # XML スキーマのインクルードまたはインポート XML スキーマには、`` 要素、`` 要素、および `` 要素を含めることができます。 これらのスキーマ要素は、インクルードまたはインポートするスキーマの構造を補足するために使用できる他の XML スキーマを参照します。 クラス、 クラス、および クラスは、スキーマ オブジェクト モデル (SOM) API でこれらの要素にマップされます。 ## XML スキーマのインクルードまたはインポート - 次のコード例で作成したカスタム スキーマを補足するもの、 [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)アドレス スキーマを持つトピックです。 アドレス スキーマを使用してカスタム スキーマを補足すると、カスタム スキーマでアドレス型が使用できるようになります。 + 次のコード サンプルは、アドレス スキーマを使用して「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」で作成したカスタム スキーマを補足します。 アドレス スキーマを使用してカスタム スキーマを補足すると、カスタム スキーマでアドレス型が使用できるようになります。 アドレス スキーマを統合するには、`` 要素または `` 要素を使用して、アドレス スキーマのコンポーネントをそのまま使用するか、または `` 要素を使用して、カスタム スキーマのニーズに合わせてコンポーネントを変更します。 アドレス スキーマの `targetNamespace` はカスタム スキーマのものとは異なっているため、`` 要素 (インポートのセマンティクス) が使用されます。 @@ -105,12 +108,12 @@ XML スキーマには、`` 要素、`` 要素、お ``` - 詳細については、 ``、 ``、および``要素およびクラスを参照してください、 [W3C XML スキーマ](http://go.microsoft.com/fwlink/?LinkId=45242)と名前空間のクラスのリファレンス ドキュメント。 + `` 要素、`` 要素、`` 要素、 クラス、 クラス、 クラスの詳細については、[W3C XML スキーマ](http://www.w3.org/XML/Schema)および 名前空間クラスのリファレンス ドキュメントを参照してください。 -## 関連項目 +## 参照 [XML スキーマ オブジェクト モデルの概要](../../../../docs/standard/data/xml/xml-schema-object-model-overview.md) [XML スキーマの読み取りと書き込み](../../../../docs/standard/data/xml/reading-and-writing-xml-schemas.md) [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md) [XML スキーマの走査](../../../../docs/standard/data/xml/traversing-xml-schemas.md) [XML スキーマの編集](../../../../docs/standard/data/xml/editing-xml-schemas.md) - [スキーマのコンパイルのための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) diff --git a/docs/standard/data/xml/inputs-to-the-xslcompiledtransform-class.md b/docs/standard/data/xml/inputs-to-the-xslcompiledtransform-class.md index eeca9bbac40..74575e7c08b 100644 --- a/docs/standard/data/xml/inputs-to-the-xslcompiledtransform-class.md +++ b/docs/standard/data/xml/inputs-to-the-xslcompiledtransform-class.md @@ -12,15 +12,18 @@ dev_langs: - csharp - vb ms.assetid: 834049f1-ab41-449e-9f10-4a1d0701bc48 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 97d636583393ab856a9c17af4c974c53fbde5767 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 7aac1e85bdc27c9c8394eadcae841069115b369d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XslCompiledTransform クラスへの入力 メソッドには、 インターフェイスを実装するオブジェクト、ソース ドキュメントを読み取る オブジェクト、文字列 URI という 3 種類のソース ドキュメントを入力できます。 @@ -36,9 +39,9 @@ ms.lasthandoff: 10/18/2017 - クラスは、XPath データ モデルに基づいた読み取り専用のデータ ストアです。 は、XSLT 処理に推奨されるクラスです。 これは、 クラスと比較して、より高速なパフォーマンスを提供します。 > [!NOTE] -> 変換はドキュメント全体に対して行われます。 つまり、ドキュメント ルート ノード以外のノードを指定しても、変換処理では、読み込んだドキュメントのすべてのノードがアクセスされます。 ノード フラグメントを変換するには、ノード フラグメントだけを含むオブジェクトを作成し、そのオブジェクトを メソッドに渡します。 詳細については、次を参照してください。[する方法: ノード フラグメントを変換](../../../../docs/standard/data/xml/how-to-transform-a-node-fragment.md)です。 +> 変換はドキュメント全体に対して行われます。 つまり、ドキュメント ルート ノード以外のノードを指定しても、変換処理では、読み込んだドキュメントのすべてのノードがアクセスされます。 ノード フラグメントを変換するには、ノード フラグメントだけを含むオブジェクトを作成し、そのオブジェクトを メソッドに渡します。 詳細については、「[方法 : ノード フラグメントを変換する](../../../../docs/standard/data/xml/how-to-transform-a-node-fragment.md)」を参照してください。 - 次の例では、 メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 このトピックの「books.xml と transform.xsl ファイルが見つかりません:[する方法: アセンブリを使用して XSLT 変換を実行](../../../../docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md)です。 + 次の例では、 メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 books.xml ファイルと transform.xsl ファイルは、トピック「[方法: アセンブリを使用して XSLT 変換を実行する](../../../../docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md)」にあります。 [!code-csharp[XslCompiledTransform.Transform2#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XslCompiledTransform.Transform2/CS/Program.cs#1)] [!code-vb[XslCompiledTransform.Transform2#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XslCompiledTransform.Transform2/VB/Module1.vb#1)] @@ -46,7 +49,7 @@ ms.lasthandoff: 10/18/2017 ## XmlReader オブジェクト メソッドは、 の現在のノードから、そのすべての子を通して読み込みます。 これにより、ドキュメントの一部をコンテキスト ドキュメントとして使用することができます。 メソッドから帰った後、 は、コンテキスト ドキュメントの終了後の次のノード上に位置します。 ドキュメントの末尾に到達すると、 はファイルの末尾 (EOF) に位置します。 - 次の例では、 メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 このトピックの「books.xml と transform.xsl ファイルが見つかりません:[する方法: アセンブリを使用して XSLT 変換を実行](../../../../docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md)です。 + 次の例では、 メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 books.xml ファイルと transform.xsl ファイルは、トピック「[方法: アセンブリを使用して XSLT 変換を実行する](../../../../docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md)」にあります。 [!code-csharp[XslCompiledTransform.Transform2#2](../../../../samples/snippets/csharp/VS_Snippets_Data/XslCompiledTransform.Transform2/CS/Program.cs#2)] [!code-vb[XslCompiledTransform.Transform2#2](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XslCompiledTransform.Transform2/VB/Module1.vb#2)] @@ -54,12 +57,12 @@ ms.lasthandoff: 10/18/2017 ## 文字列 URI XSLT の入力としてソース ドキュメントの URI を指定することもできます。 URI の解決には が使用されます。 メソッドに渡して、使用するリゾルバーを指定することができます。 が指定されていない場合、 メソッドは既定の を資格情報なしで使用します。 - 次の例では、 メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 このトピックの「books.xml と transform.xsl ファイルが見つかりません:[する方法: アセンブリを使用して XSLT 変換を実行](../../../../docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md)です。 + 次の例では、 メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 books.xml ファイルと transform.xsl ファイルは、トピック「[方法: アセンブリを使用して XSLT 変換を実行する](../../../../docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md)」にあります。 [!code-csharp[XslCompiledTransform.Transform2#3](../../../../samples/snippets/csharp/VS_Snippets_Data/XslCompiledTransform.Transform2/CS/Program.cs#3)] [!code-vb[XslCompiledTransform.Transform2#3](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XslCompiledTransform.Transform2/VB/Module1.vb#3)] - 詳細については、次を参照してください。[を解決する外部のリソース中に XSLT 処理](../../../../docs/standard/data/xml/resolving-external-resources-during-xslt-processing.md)です。 + 詳細については、「[XSLT 処理中の外部リソースの解決](../../../../docs/standard/data/xml/resolving-external-resources-during-xslt-processing.md)」を参照してください。 -## 関連項目 +## 参照 [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) diff --git a/docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md index c11d4c5da64..8e4c0296739 100644 --- a/docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md +++ b/docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md @@ -13,22 +13,25 @@ dev_langs: - vb - cpp ms.assetid: 2ed8c28b-b88d-4be7-9c87-92df01f0821f -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 34151590a14c48c0a84677f2d7cae662291edf40 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 33a1bf08d7a66dd970a3a7207293277021ed46b7 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XPathNavigator による XML データの挿入 クラスは、XML ドキュメント内に兄弟ノード、子ノード、および属性ノードを挿入するためのメソッドのセットを提供します。 これらのメソッドを使用するには、 オブジェクトが編集可能である必要があります。つまり、その プロパティを `true` にする必要があります。 XML ドキュメントを編集できる オブジェクトは、 クラスの メソッドによって作成されます。 クラスによって作成される オブジェクトは読み取り専用であり、 オブジェクトによって作成される オブジェクトの編集メソッドを使用しようとすると、 が発生します。 - 編集可能な作成の詳細については、オブジェクトを参照してください[XPathDocument および XmlDocument を使用して XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)です。 + 編集可能な オブジェクトの作成方法については、「[XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)」を参照してください。 ## ノードの挿入 クラスは、XML ドキュメント内に兄弟ノード、子ノード、および属性ノードを挿入するためのメソッドを提供します。 これらのメソッドによって、 オブジェクトの現在位置に関連した異なる場所にノードまたは属性を挿入できます。これらのメソッドについて以下に説明します。 @@ -227,7 +230,7 @@ navigator.SetTypedValue(DateTime.Now); プロパティは、与えられた XML の解析済みの内容を使用して `string` オブジェクトの現在位置にある子ノードの XML マークアップを変更します。 同様に、 プロパティは、 オブジェクトの現在位置にある子ノードと現在のノード自体の XML マークアップを変更します。 - このトピックで説明したメソッドに加えて、 プロパティと プロパティは、XML ドキュメントからノードに値を挿入するために使用できます。 使用しての詳細については、ノードと値を挿入するプロパティを参照してください、 [XPathNavigator を使用して変更の XML データ](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md)トピックです。 + このトピックで説明したメソッドに加えて、 プロパティと プロパティは、XML ドキュメントからノードに値を挿入するために使用できます。 プロパティと プロパティを使用してノードと値を挿入する方法の詳細については「[XpathNavigator による XML データの変更](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md)」のトピックを参照してください。 ## 名前空間と xml:lang の競合 パラメーターとして `xml:lang` オブジェクトを受け取る クラスの 、および メソッドを使用して XML データを挿入する場合、名前空間のスコープと 宣言に関連する競合が発生する可能性があります。 @@ -335,12 +338,12 @@ document.Save("book.xml"); ``` ## XML ドキュメントの保存 - ここに記載されているメソッドによる オブジェクトに対する変更の保存は、 クラスのメソッドを使用して実行されます。 に対する変更の保存の詳細については、オブジェクトを参照してください[ドキュメントの保存と書き込み](../../../../docs/standard/data/xml/saving-and-writing-a-document.md)です。 + ここに記載されているメソッドによる オブジェクトに対する変更の保存は、 クラスのメソッドを使用して実行されます。 オブジェクトに対する変更の保存に関する詳細については、「[ドキュメントの保存と書き込み](../../../../docs/standard/data/xml/saving-and-writing-a-document.md)」を参照してください。 -## 関連項目 +## 参照 [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) - [XPathNavigator による XML データを変更します。](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md) - [XPathNavigator による XML データを削除します。](../../../../docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md) + [XpathNavigator による XML データの変更](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データの削除](../../../../docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md) diff --git a/docs/standard/data/xml/inserting-nodes-into-an-xml-document.md b/docs/standard/data/xml/inserting-nodes-into-an-xml-document.md index eddc3e3cc58..029a01b457c 100644 --- a/docs/standard/data/xml/inserting-nodes-into-an-xml-document.md +++ b/docs/standard/data/xml/inserting-nodes-into-an-xml-document.md @@ -9,18 +9,21 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 891e54f5-54f6-4bb4-b624-9d1b6a1f1216 -caps.latest.revision: "3" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 62b2a0a6dea7608ab1586afbb29ada36927d7e1b -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 819e1d908e011be7839dceb8d15e4ade11cda002 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XML ドキュメントへのノードの挿入 -新しいノードを挿入してドキュメントを変更できます。 ノードは、新しく作成したり、同じドキュメントの既存のノードから作成したり、別のドキュメントからインポートしたりできます。 新しいノードの作成の詳細については、次を参照してください。 [DOM で新しいノードの作成](../../../../docs/standard/data/xml/create-new-nodes-in-the-dom.md)です。 既存のノードをコピーする方法の詳細については、次を参照してください。[コピー既存ノード](../../../../docs/standard/data/xml/copy-existing-nodes.md)、[コピー既存のノードから 1 つのドキュメントを別](../../../../docs/standard/data/xml/copying-existing-nodes-from-one-document-to-another.md)、または[ドキュメント フラグメントのコピー](../../../../docs/standard/data/xml/copying-document-fragments.md)です。 +新しいノードを挿入してドキュメントを変更できます。 ノードは、新しく作成したり、同じドキュメントの既存のノードから作成したり、別のドキュメントからインポートしたりできます。 新しいノードを作成する方法の詳細については、「[DOM への新しいノードの作成](../../../../docs/standard/data/xml/create-new-nodes-in-the-dom.md)」を参照してください。 既存のノードをコピーする方法の詳細については、「[既存のノードのコピー](../../../../docs/standard/data/xml/copy-existing-nodes.md)」、「[ドキュメント間での既存のノードのコピー](../../../../docs/standard/data/xml/copying-existing-nodes-from-one-document-to-another.md)」、または「[ドキュメント フラグメントのコピー](../../../../docs/standard/data/xml/copying-document-fragments.md)」を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/managing-namespaces-in-an-xml-document.md b/docs/standard/data/xml/managing-namespaces-in-an-xml-document.md index f7d05598f5a..8faec184fea 100644 --- a/docs/standard/data/xml/managing-namespaces-in-an-xml-document.md +++ b/docs/standard/data/xml/managing-namespaces-in-an-xml-document.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 682643fc-b848-4e42-8c0d-50deeaeb5f2a -caps.latest.revision: "5" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: e9761afe8b56e15edba6e0319cce9a02501a6bb0 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 7901f4bf88215f84445c1d222e6582e0a063c25a +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XML ドキュメントでの名前空間の管理 XML 名前空間は、XML ドキュメントの要素名と属性名をカスタムの定義済み URI に関連付けます。 この関係を作成するには、名前空間 URI のプレフィックスを定義し、そのプレフィックスを使用して XML データ内の要素名と属性名を修飾します。 名前空間は要素名や属性名の競合を防ぎ、同じ名前の要素や属性を個別に処理および評価できるようにします。 @@ -67,14 +70,14 @@ XML 名前空間は、XML ドキュメントの要素名と属性名をカスタ ## 名前空間の管理 クラスには、名前空間 URI とそのプレフィックスのコレクションが格納されます。このクラスを使用すると、コレクションで名前空間を検索、追加、および削除できます。 このクラスは、特定のコンテキストで、XML の処理のパフォーマンスを向上させるために必要です。 たとえば、XPath をサポートするには、 クラスで を使用します。 - 名前空間マネージャーは、名前空間にいずれかの検証は実行できませんが、プレフィックスと名前空間が既に確認してに準拠するいると見なします、 [W3C 名前空間](http://www.w3.org/TR/REC-xml-names/)仕様です。 + 名前空間マネージャーでは名前空間の検証は一切実行されません。このマネージャーでは、プレフィックスと名前空間が既に確認され、[W3C 名前空間](http://www.w3.org/TR/REC-xml-names/)仕様に準拠していることが前提となっています。 > [!NOTE] -> [LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13)を使用していない名前空間を管理します。 参照してください[XML 名前空間の使用](http://msdn.microsoft.com/library/e3003209-3234-45be-a832-47feb7927430)LINQ to XML を使用する場合は、名前空間を管理する方法について、LINQ ドキュメント。 +> [LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13) では、名前空間の管理に が使用されません。 LINQ to XML を使用する場合の名前空間の管理については、LINQ ドキュメントの「[XML 名前空間の使用](http://msdn.microsoft.com/library/e3003209-3234-45be-a832-47feb7927430)」を参照してください。 クラスを使用して実行できる管理タスクと検索タスクをいくつか次に示します。 使用例を含む詳細については、各メソッドまたはプロパティのリファレンス ページへのリンクをクリックしてください。 -|目的|用途| +|終了|使用| |--------|---------| |名前空間を追加する| メソッド| |名前空間を削除する| メソッド| @@ -86,6 +89,6 @@ XML 名前空間は、XML ドキュメントの要素名と属性名をカスタ |現在のスコープ内にプレフィックスが定義されているかどうかを確認する| メソッド| |プレフィックスおよび URI を検索するときに使用する名前テーブルを取得する| プロパティ| -## 関連項目 +## 参照 [XML ドキュメントと XML データ](../../../../docs/standard/data/xml/index.md) diff --git a/docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md b/docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md index c9ca48c9b7f..197f632b20b 100644 --- a/docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md +++ b/docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md @@ -12,15 +12,18 @@ dev_langs: - csharp - vb ms.assetid: 450e350b-6a68-4634-a2a5-33f4dc33baf0 -caps.latest.revision: "5" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 1bf43922fb702988e9057f541833cd58d33c820a -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2191cb15a85e9b16ff0a21084668e80d3c197bfa +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # オブジェクト階層の XML データへのマップ メモリに読み込まれた XML ドキュメントは、ツリーという概念で表現されます。 プログラミングでは、オブジェクト階層を利用してツリーのノードにアクセスします。 XML コンテンツがどのようにノードに変換されるかを次の例に示します。 @@ -42,9 +45,9 @@ ms.lasthandoff: 10/18/2017 ![サンプル ノード ツリー](../../../../docs/standard/data/xml/media/simple-xml.gif "Simple_XML") book と title のノード ツリー表現 - `book`要素は、 **XmlElement**オブジェクト、次の要素では、`title`にもなります、 **XmlElement**、要素の内容になります、 **XmlText**オブジェクト。 調べて、 **XmlElement**メソッドとプロパティ、メソッドおよびプロパティは、メソッドとプロパティで使用できるとは異なる、 **XmlText**オブジェクト。 実行可能なアクションはノード型によって決定されるため、XML マークアップがどのノード型になるかを理解することがきわめて重要です。 + `book` 要素は **XmlElement** オブジェクトになり、次の要素の `title` も **XmlElement** になりますが、要素コンテンツは **XmlText** オブジェクトになります。 **XmlElement** のメソッドとプロパティは、**XmlText** オブジェクトで使用できるメソッドとプロパティとは異なります。 実行可能なアクションはノード型によって決定されるため、XML マークアップがどのノード型になるかを理解することがきわめて重要です。 - XML データを読み込み、ノード型に応じて異なるテキストを書き出す例を次に示します。 次の XML データ ファイルを使用して、入力として**items.xml**: + XML データを読み込み、ノード型に応じて異なるテキストを書き出す例を次に示します。 入力として、次の **items.xml** という XML データ ファイルを使用します。 **入力** @@ -62,7 +65,7 @@ book と title のノード ツリー表現 ``` - 次のコード例を読み取り、 **items.xml**ファイルし、各ノードの種類の情報を表示します。 + **items.xml** ファイルを読み込み、それぞれのノード型の情報を表示するコード サンプルを次に示します。 ```vb Imports System @@ -195,37 +198,37 @@ public class Sample |入力|出力|ノード型のテスト| |-----------|------------|--------------------| -|\|\|XmlNodeType.XmlDeclaration| -|\|\|XmlNodeType.Comment| -|\] >|\]|XmlNodeType.DocumentType| -|\<項目 >|\<項目 >|XmlNodeType.Element| +|\|\|XmlNodeType.XmlDeclaration| +|\|\|XmlNodeType.Comment| +|\]>|\]|XmlNodeType.DocumentType| +|\|\|XmlNodeType.Element| |\|\|XmlNodeType.Element| -|エンティティにテストします。&number;|Test with an entity:|XmlNodeType.Text| -|\|\|XmlNodeType.EndElement| +|Test with an entity: &number;|Test with an entity:|XmlNodeType.Text| +|\|\|XmlNodeType.EndElement| |\|\|XmNodeType.Element| |test with a child element|test with a child element|XmlNodeType.Text| -|\<詳細 >|\<詳細 >|XmlNodeType.Element| +|\|\|XmlNodeType.Element| |stuff|stuff|XmlNodeType.Text| -|\|\|XmlNodeType.EndElement| +|\|\|XmlNodeType.EndElement| |\|\|XmlNodeType.Element| |test with a CDATA section|test with a CDATA section|XmlTest.Text| -|]\>|]\>|XmlTest.CDATA| +|]]\>|]]\>|XmlTest.CDATA| |def|def|XmlNodeType.Text| -|\|\|XmlNodeType.EndElement| +|\|\|XmlNodeType.EndElement| |\|\|XmlNodeType.Element| -|Char 型のエンティティにテストします。 (& a)\#65 です。|Test with a char entity: A|XmlNodeType.Text| -|\|\|XmlNodeType.EndElement| -|\|\<--この要素で 14 文字--> します。|XmlNodeType.Comment| +|Test with a char entity: &\#65;|Test with a char entity: A|XmlNodeType.Text| +|\|\|XmlNodeType.EndElement| +|\|\<--Fourteen chars in this element.-->|XmlNodeType.Comment| |\|\|XmlNodeType.Element| |1234567890ABCD|1234567890ABCD|XmlNodeType.Text| -|\|\|XmlNodeType.EndElement| -|\|\|XmlNodeType.EndElement| +|\|\|XmlNodeType.EndElement| +|\|\|XmlNodeType.EndElement| 有効なアクションの種類と設定および取得できるプロパティの種類はノード型によって決まるため、割り当てられているノード型を知っておく必要があります。 - 空白ノードの作成には、データが、DOM に読み込まれるときに、制御、 **PreserveWhitespace**フラグ。 詳細については、次を参照してください。[空白および有意の空白処理 DOM を読み込むとき](../../../../docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md)です。 + 空白ノードの作成は、データが DOM に読み込まれるときに **PreserveWhitespace** フラグによって制御されます。 詳細については、「[DOM を読み込むときの空白および有意の空白の処理](../../../../docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md)」を参照してください。 - 新しいノードを DOM に追加するを参照してください。 [XML ドキュメントにノードの挿入](../../../../docs/standard/data/xml/inserting-nodes-into-an-xml-document.md)です。 DOM からノードを削除するを参照してください。[ノードの削除、コンテンツ、および XML ドキュメントから値](../../../../docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md)です。 DOM のノードの内容を変更するを参照してください。[ノードの変更、コンテンツ、および XML ドキュメント内の値](../../../../docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md)です。 + DOM に新しいノードを追加するには、「[XML ドキュメントへのノードの挿入](../../../../docs/standard/data/xml/inserting-nodes-into-an-xml-document.md)」を参照してください。 DOM からノードを削除するには、「[XML ドキュメントからのノード、コンテンツ、値の削除](../../../../docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md)」を参照してください。 DOM のノードのコンテンツを編集するには、「[XML ドキュメントのノード、コンテンツ、値の変更](../../../../docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md)」を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/migrating-from-the-xsltransform-class.md b/docs/standard/data/xml/migrating-from-the-xsltransform-class.md index b8e5f64fae8..b4406c7ae95 100644 --- a/docs/standard/data/xml/migrating-from-the-xsltransform-class.md +++ b/docs/standard/data/xml/migrating-from-the-xsltransform-class.md @@ -12,28 +12,31 @@ dev_langs: - csharp - vb ms.assetid: 9404d758-679f-4ffb-995d-3d07d817659e -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: b867b2d7eb2f4b1252579bbf1f47430d9a9a48f4 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 964e2de7258f4849de01e4fbeae330d009710289 +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/19/2018 --- # XslTransform クラスからの移行 -XSLT アーキテクチャで再設計されました、[!INCLUDE[vsprvslong](../../../../includes/vsprvslong-md.md)]を解放します。 クラスは クラスで置き換えられています。 +XSLT アーキテクチャは、[!INCLUDE[vsprvslong](../../../../includes/vsprvslong-md.md)] リリースで設計が変更されました。 クラスは クラスで置き換えられています。 以降では、 クラスと クラスの主な相違点について説明します。 -## パフォーマンス テスト +## パフォーマンス クラスでは多くのパフォーマンスの向上が図られています。 新しい XSLT プロセッサは XSLT スタイル シートを、共通言語ランタイム (CLR) が他のプログラム言語で行うのと同様に、共通の中間形式にコンパイルします。 いったんスタイル シートがコンパイルされると、それをキャッシュして再利用することができます。 クラスには、このクラスを クラスよりも大幅に高速化する他の最適化も含まれています。 > [!NOTE] -> 全体的なパフォーマンスは クラスの方が クラスより優れていますが、 クラスの メソッドが変換で初めて呼び出されたときは、 クラスの メソッドよりパフォーマンスが劣る場合があります。 これは、XSLT ファイルを読み込む前にコンパイルする必要があるためです。 詳細については、次のブログの投稿を参照してください: [XslCompiledTransform は XslTransform より遅いですか?](http://go.microsoft.com/fwlink/?LinkId=130590) +> 全体的なパフォーマンスは クラスの方が クラスより優れていますが、 クラスの メソッドが変換で初めて呼び出されたときは、 クラスの メソッドよりパフォーマンスが劣る場合があります。 これは、XSLT ファイルを読み込む前にコンパイルする必要があるためです。 詳しくは、ブログの投稿「[XslCompiledTransform Slower than XslTransform?](https://blogs.msdn.microsoft.com/antosha/2006/07/16/xslcompiledtransform-slower-than-xsltransform/)」(XslCompiledTransform は XslTransform より遅い?) をご覧ください。 ## セキュリティ 既定で、 クラスでは XSLT `document()` 関数と埋め込みスクリプトのサポートが無効になっています。 これらの機能を有効にするには、機能が有効になっている オブジェクトを作成し、それを メソッドに渡します。 スクリプト作成を有効にして XSLT 変換を実行する方法を次の例に示します。 @@ -41,7 +44,7 @@ XSLT アーキテクチャで再設計されました、[!INCLUDE[vsprvslong](.. [!code-csharp[XML_Migration#16](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#16)] [!code-vb[XML_Migration#16](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#16)] - 詳細については、次を参照してください。 [XSLT のセキュリティに関する考慮事項](../../../../docs/standard/data/xml/xslt-security-considerations.md)です。 + 詳しくは、「[XSLT のセキュリティに関する考慮事項](../../../../docs/standard/data/xml/xslt-security-considerations.md)」をご覧ください。 ## 新機能 @@ -98,7 +101,7 @@ using (XmlWriter writer = doc.CreateNavigator().AppendChild()) { ``` ### 随意動作 - W3C 勧告『XSL Transformations (XSLT) Version 1.0』には、対処方法を実装者が決定できる事項があります。 このような事項は、随意動作と見なされています。 事項によっては、 クラスと クラスで動作が異なります。 詳細については、次を参照してください。[回復可能な XSLT エラー](../../../../docs/standard/data/xml/recoverable-xslt-errors.md)です。 + W3C 勧告『XSL Transformations (XSLT) Version 1.0』には、対処方法を実装者が決定できる事項があります。 このような事項は、随意動作と見なされています。 事項によっては、 クラスと クラスで動作が異なります。 詳しくは、「[XSLT エラーの解決](../../../../docs/standard/data/xml/recoverable-xslt-errors.md)」をご覧ください。 ### 拡張オブジェクトとスクリプト関数 では、スクリプト関数の使用に関して新たに 2 つの制限が加えられています。 @@ -109,21 +112,21 @@ using (XmlWriter writer = doc.CreateNavigator().AppendChild()) { では、スクリプト関数へのバインド (メソッド名参照) がコンパイル時に実行されます。XslTranform を利用するスタイル シートを によって読み込むと、例外が発生する場合があります。 - では、`msxsl:using` 要素内に子要素として `msxsl:assembly` および `msxsl:script` を含めることがサポートされます。 `msxsl:using` 要素と `msxsl:assembly` 要素を使用して、スクリプト ブロックで使用する追加の名前空間とアセンブリを宣言できます。 参照してください[msxsl:script スクリプト ブロックを使用した](../../../../docs/standard/data/xml/script-blocks-using-msxsl-script.md)詳細についてはします。 + では、`msxsl:using` 要素内に子要素として `msxsl:assembly` および `msxsl:script` を含めることがサポートされます。 `msxsl:using` 要素と `msxsl:assembly` 要素を使用して、スクリプト ブロックで使用する追加の名前空間とアセンブリを宣言できます。 詳しくは、「[msxsl:script を使用したスクリプト ブロック](../../../../docs/standard/data/xml/script-blocks-using-msxsl-script.md)」をご覧ください。 では、複数のオーバーロードおよびそれと同数の引数を含む拡張オブジェクトは使用できません。 ### MSXML 関数 クラスでは、新しい MSXML 関数のサポートが追加されました。 新しい関数または強化された関数は次のとおりです。 -- msxsl:node-設定:の引数を必要な[ノードセット関数](http://msdn.microsoft.com/en-us/87b6b3f4-16f4-4fa3-8103-d62a679ac2a7)関数の結果ツリー フラグメント。 クラスでは、この要件がありません。 +- msxsl:node-set: では、[node-set 関数](http://msdn.microsoft.com/library/87b6b3f4-16f4-4fa3-8103-d62a679ac2a7)の引数を結果ツリー フラグメントにする必要がありました。 クラスでは、この要件がありません。 - msxsl:version : この関数は、 でサポートされます。 -- XPath 拡張関数: [ms:string-関数の比較](http://msdn.microsoft.com/en-us/20616b82-9e27-444c-b714-4f1e09b73aee)、 [ms:utc 関数](http://msdn.microsoft.com/en-us/ef26fc88-84c6-4fb9-9c3b-f2f5264b864f)、 [ms:namespace-uri 関数](http://msdn.microsoft.com/en-us/91f9cabf-ab93-4dbe-9c12-e6a75214f4c7)、 [ms:local-関数の名前](http://msdn.microsoft.com/en-us/10ed60a1-17a9-4d74-8b98-7940ac97c0b5)、 [ms:number 関数](http://msdn.microsoft.com/en-us/b94fc08e-1f31-4f48-b1a8-6d78c1b5d954)、 [ms:format-関数の日付](http://msdn.microsoft.com/en-us/51f35609-89a9-4098-a166-88bf01300bf5)、および[ms:format-関数の時間](http://msdn.microsoft.com/en-us/e5c2df2d-e8fb-4a8f-bfc0-db84ea12a5d5)関数がサポートされています。 +- XPath 拡張関数: [ms:string-compare 関数](http://msdn.microsoft.com/library/20616b82-9e27-444c-b714-4f1e09b73aee)、[ms:utc 関数](http://msdn.microsoft.com/library/ef26fc88-84c6-4fb9-9c3b-f2f5264b864f)、[ms:namespace-uri 関数](http://msdn.microsoft.com/library/91f9cabf-ab93-4dbe-9c12-e6a75214f4c7)、[ms:local-name 関数](http://msdn.microsoft.com/library/10ed60a1-17a9-4d74-8b98-7940ac97c0b5)、[ms:number 関数](http://msdn.microsoft.com/library/b94fc08e-1f31-4f48-b1a8-6d78c1b5d954)、[ms:format-date 関数](http://msdn.microsoft.com/library/51f35609-89a9-4098-a166-88bf01300bf5)、[ms:format-time 関数](http://msdn.microsoft.com/library/e5c2df2d-e8fb-4a8f-bfc0-db84ea12a5d5)がサポートされるようになりました。 - スキーマ関連の XPath 拡張関数 : これは、 ではネイティブでサポートされません。 ただし、拡張関数として実装することはできます。 -## 関連項目 +## 参照 [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) [XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md) diff --git a/docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md index c41c0bf93bd..c765f745e0b 100644 --- a/docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md +++ b/docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md @@ -13,22 +13,25 @@ dev_langs: - vb - cpp ms.assetid: 03a7c5a1-b296-4af4-b209-043c958dc0a5 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: ec2846dcac6bfe14746e038d592b7dfe49374993 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: cc46aeda6efe9f21bc094a4bc9d211fc282e9b65 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XpathNavigator による XML データの変更 クラスは、XML ドキュメント内のノードを変更するためのメソッドのセットを提供します。 これらのメソッドを使用するには、 オブジェクトが編集可能である必要があります。つまり、その プロパティを `true` にする必要があります。 XML ドキュメントを編集できる オブジェクトは、 クラスの メソッドによって作成されます。 クラスによって作成される オブジェクトは読み取り専用で、 オブジェクトによって作成される オブジェクトの編集メソッドを使用しようとすると、 が発生します。 - 編集可能な作成の詳細については、オブジェクトを参照してください[XPathDocument および XmlDocument を使用して XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)です。 + 編集可能な オブジェクトの作成方法については、「[XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)」を参照してください。 ## ノードの変更 ノードの値を簡単に変更するには、 クラスの メソッドを使用します。 @@ -48,7 +51,7 @@ ms.lasthandoff: 11/21/2017 > [!NOTE] > ノードまたは ノードの編集はサポートされません。 - クラスは、ノードの挿入および削除に使用されるメソッドのセットも提供しています。 挿入して、XML ドキュメントからノードを削除の詳細については、次を参照してください。、 [XML データの挿入 XPathNavigator を使用した](../../../../docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md)と[XPathNavigator を使用して削除する XML データ](../../../../docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md)トピックです。 + クラスは、ノードの挿入および削除に使用されるメソッドのセットも提供しています。 XML ドキュメントのノードの挿入と削除の詳細については、「[XPathNavigator による XML データの挿入](../../../../docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md)」と「[XPathNavigator による XML データの削除](../../../../docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md)」のトピックを参照してください。 ### 型指定されていない値の変更 メソッドは、パラメーターとして渡された型指定されていない `string` 値を挿入するだけです。このパラメーターは、 オブジェクトの現在位置にあるノードの値です。 値に型は設定されず、スキーマ情報が使用可能な場合でも、ノードの型に対して新しい値が有効どうかを検証せずに挿入されます。 @@ -122,7 +125,7 @@ navigator.SetTypedValue(DateTime.Now); 要素の有効性がその子の要素および属性の有効性に依存することを考えると、要素が以前有効だった場合、どちらを変更しても要素の有効性が変わる結果になります。 具体的には、要素の子要素または属性が挿入、更新または削除されると、その要素の有効性は不明になります。 これは、要素の プロパティの プロパティが に設定されることによって表されます。 さらに、要素の親要素 (およびその親、そのまた親と続く) の有効性も不明になるため、この効果は、XML ドキュメント全体で再帰的に上方向にカスケードされます。 - スキーマの検証の詳細については、クラスを参照してください[XPathNavigator を使用したスキーマ検証](../../../../docs/standard/data/xml/schema-validation-using-xpathnavigator.md)です。 + スキーマ検証および クラスの詳細については、「[XPathNavigator を使用したスキーマ検証](../../../../docs/standard/data/xml/schema-validation-using-xpathnavigator.md)」を参照してください。 ### 属性の変更 および メソッドは、型指定されていない属性ノードと型指定された属性ノード、および「ノードの変更」に記載されているその他のノード型の変更に使用できます。 @@ -253,12 +256,12 @@ Console.WriteLine(navigator.OuterXml); > `xsi:nil` 属性が `false` に設定された要素のコンテンツが削除されても、その属性の値は `true` に変更されません。 ## XML ドキュメントの保存 - ここに記載されている編集メソッドによる オブジェクトに対する変更の保存は、 クラスのメソッドを使用して実行されます。 に対する変更の保存の詳細については、オブジェクトを参照してください[ドキュメントの保存と書き込み](../../../../docs/standard/data/xml/saving-and-writing-a-document.md)です。 + ここに記載されている編集メソッドによる オブジェクトに対する変更の保存は、 クラスのメソッドを使用して実行されます。 オブジェクトに対する変更の保存に関する詳細については、「[ドキュメントの保存と書き込み](../../../../docs/standard/data/xml/saving-and-writing-a-document.md)」を参照してください。 -## 関連項目 +## 参照 [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) - [XPathNavigator による XML データを挿入します。](../../../../docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md) - [XPathNavigator による XML データを削除します。](../../../../docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データの挿入](../../../../docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データの削除](../../../../docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md) diff --git a/docs/standard/data/xml/namespace-affect-on-entity-ref-expansion-for-new-nodes.md b/docs/standard/data/xml/namespace-affect-on-entity-ref-expansion-for-new-nodes.md index 3c25e296691..3f15d014cfa 100644 --- a/docs/standard/data/xml/namespace-affect-on-entity-ref-expansion-for-new-nodes.md +++ b/docs/standard/data/xml/namespace-affect-on-entity-ref-expansion-for-new-nodes.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 64359aee-aab0-4042-9a32-d19789af6ca7 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 39110a9b44e6efbe7ad0331cfdb4fbe6078e7cfc -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 9b59f85eb0ef6646345eaef2a409f622c6fe4651 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 要素と属性を含む新しいノードでのエンティティ参照の展開に対する名前空間の影響 エンティティ宣言には、原則として任意のコンテンツを含めることができるため、`test">` のような要素が含まれている可能性もあります。 @@ -25,7 +28,7 @@ ms.lasthandoff: 10/18/2017 `&aname;` の置換コンテンツへの展開は、XML の解析時に行われるのではありません。 ノードがドキュメントに配置されるまでは、要素に対する名前空間を解決できないため、XML の展開は実行されません。 スコープ内の名前空間が判明するのは、ノードが配置された後になります。 ノードがドキュメントに配置されると、名前空間の解決が行われ、結果として得られたエンティティ コンテンツが適切なノードに解析されます。 > [!NOTE] -> 新しく作成されたエンティティ参照ノードがいったん展開された後、再び展開されることはありません。 したがって、要素の置換テキストで使われる名前空間は、親ノードの設定時にバインドされます。 ただし、名前空間は変更できますまたはで複製されたエンティティ参照ノードを削除して、別の場所に挿入するときに、既存のエンティティ参照ノードの**CloneNode**メソッドです。 +> 新しく作成されたエンティティ参照ノードがいったん展開された後、再び展開されることはありません。 したがって、要素の置換テキストで使われる名前空間は、親ノードの設定時にバインドされます。 ただし、既存のエンティティ参照ノードを削除して別の場所に挿入すると、そのノードに対する名前空間が変更される可能性があります。また、**CloneNode** メソッドで複製されたエンティティ参照ノードにおいても、名前空間が変わる可能性があります。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/namespace-support-in-the-dom.md b/docs/standard/data/xml/namespace-support-in-the-dom.md index e9f77911ca3..44254fb72ba 100644 --- a/docs/standard/data/xml/namespace-support-in-the-dom.md +++ b/docs/standard/data/xml/namespace-support-in-the-dom.md @@ -9,28 +9,31 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: f0548ead-0fed-41ee-b33e-117ba900d3bc -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 3145df6517df9db580bfcc5d67edd9d1a61f290b -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2b8135a55c537f480e0d595e127c2cad55e977ca +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # DOM における名前空間のサポート XML ドキュメント オブジェクト モデル (DOM) は名前空間に完全に対応しています。 名前空間に対応している XML ドキュメントだけがサポートされます。 W3C (World Wide Web Consortium) の仕様によれば、DOM Level 1 を実装する DOM アプリケーションは名前空間に対応していなくてもかまいませんが、DOM Level 2 の機能は名前空間に対応しています。 ただし、メソッドが DOM 勧告の Level 1 または Level 2 のどちらに準拠しているかに関係なく、XML DOM のすべての機能は名前空間に対応しています。 たとえば、名前空間に対応していない環境では、DOM Level 1 勧告の規定に従って `setAttribute("A:b", "123")` を呼び出しても、プレフィックス `A` とローカル名 `b` を持つ属性は設定されません。 この結果は、`A:b` という値の属性になります。 - 名前空間に対応している環境では、DOM Level 2 の `setAttribute("A:b", "123")` を呼び出すと、属性のプレフィックスが `A` になり、ローカル名が `b` になります。 これは、Microsoft .net DOM のしくみです。 + 名前空間に対応している環境では、DOM Level 2 の `setAttribute("A:b", "123")` を呼び出すと、属性のプレフィックスが `A` になり、ローカル名が `b` になります。 これが Microsoft .NET Framework DOM の動作です。 - したがって、名前パラメーターを受け取るすべてのメソッドは、名前を修飾するプレフィックスも受け取ります。 Name パラメーターなど、`A:b`で、 **setAttribute** DOM Level 1 メソッドは次のように解析します。 + したがって、名前パラメーターを受け取るすべてのメソッドは、名前を修飾するプレフィックスも受け取ります。 DOM Level 1 の **setAttribute** メソッドの `A:b` のような名前パラメーターは、次のように解析されます。 - コロン (:) が含まれない場合は、ローカル名が `name` パラメーターに設定され、プレフィックスと名前空間 URI は空の文字列になります。 -- コロンが見つかると、最初のコロンの位置に基づいて名前が 2 つの部分に分割されます。 プレフィックスはコロンより前の文字列に設定され、ローカル名はコロンより後の文字列に設定されます。 名前空間 URI の値をとらないメソッドでは、名前空間 URI は解決されず、空の文字列のままになります。 それ以外の場合は、メソッドに渡された文字列が名前空間 URI として設定されます。 プレフィックスが定義されていない場合、**保存**メソッドおよび**InnerXml**と**OuterXml**プロパティは失敗します。 +- コロンが見つかると、最初のコロンの位置に基づいて名前が 2 つの部分に分割されます。 プレフィックスはコロンより前の文字列に設定され、ローカル名はコロンより後の文字列に設定されます。 名前空間 URI の値をとらないメソッドでは、名前空間 URI は解決されず、空の文字列のままになります。 それ以外の場合は、メソッドに渡された文字列が名前空間 URI として設定されます。 プレフィックスが定義されていない場合、**Save** メソッド、**InnerXml** プロパティ、**OuterXml** プロパティは失敗します。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/node-collections-in-namednodemaps-and-nodelists.md b/docs/standard/data/xml/node-collections-in-namednodemaps-and-nodelists.md index 9ed27817dc3..45922e556c5 100644 --- a/docs/standard/data/xml/node-collections-in-namednodemaps-and-nodelists.md +++ b/docs/standard/data/xml/node-collections-in-namednodemaps-and-nodelists.md @@ -9,20 +9,23 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 025954b8-7aa8-47c5-a1c1-f81064fb4d65 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 7eeed46782eb6c55af23559035fb8b6bcb14301f -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: ff327c1a450e9ce712d496bdca2cd2ebbff6adda +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # NamedNodeMaps と NodeLists のノード コレクション -ノードのセットを取得し、順序付けられた、または順序付けられていないコレクションに格納できます。 ノード セットが格納された順序付けられていないコレクションは、W3C (World Wide Web Consortium) では NamedNodeMap と呼ばれています。このタイプのコレクションからは、名前またはインデックスによってデータを取得できます。 ノード セットが格納された順序付けられたコレクションは、W3C では NodeList と呼ばれています。このコレクションのデータは、0 から始まるインデックスによって取得できます。 NamedNodeMaps および NodeLists は、W3C で規定されています。 Microsoft .NET Framework での namednodemap の実装は、 **XmlNamedNodeMap**、NodeList はによって実装されると、 **XmlNodeList**です。 +ノードのセットを取得し、順序付けられた、または順序付けられていないコレクションに格納できます。 ノード セットが格納された順序付けられていないコレクションは、W3C (World Wide Web Consortium) では NamedNodeMap と呼ばれています。このタイプのコレクションからは、名前またはインデックスによってデータを取得できます。 ノード セットが格納された順序付けられたコレクションは、W3C では NodeList と呼ばれています。このコレクションのデータは、0 から始まるインデックスによって取得できます。 NamedNodeMaps および NodeLists は、W3C で規定されています。 Microsoft .NET Framework での NamedNodeMap の実装は **XmlNamedNodeMap** であり、NodeList の実装は **XmlNodeList** です。 - 順序付けられていないコレクションについては、次を参照してください。[名前またはインデックスによる順序付けられていないノードの取得](../../../../docs/standard/data/xml/unordered-node-retrieval-by-name-or-index.md)です。 順序付けられたコレクションについては、次を参照してください。[インデックスによる順序付けられたノードの取得](../../../../docs/standard/data/xml/ordered-node-retrieval-by-index.md)です。 + 順序付けられていないコレクションについては、「[名前またはインデックスによる順序付けられていないノードの取得](../../../../docs/standard/data/xml/unordered-node-retrieval-by-name-or-index.md)」を参照してください。 順序付けられたコレクションについては、「[インデックスによる順序付けられたノードの取得](../../../../docs/standard/data/xml/ordered-node-retrieval-by-index.md)」を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md b/docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md index a35d10f59de..d940453267f 100644 --- a/docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md +++ b/docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 1a954b41-7173-40bc-8544-d430f209b1e5 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 9ac0135227599d6a72813bcf57b209705545da66 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d1bca725d20ec35ef7d6f60fce131f9d9c951650 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XPathNavigator を使用するノード セットのナビゲーション クラスのノード セット ナビゲーション メソッドを使用して、 または オブジェクト内のノード間を移動できます。 すべてのノード間の移動、または クラスの選択メソッドによって返される選択されたノード セット間を移動できます。 @@ -25,7 +28,7 @@ ms.lasthandoff: 11/21/2017 ## 要素ノード セットのナビゲーション クラスは、要素ノードの移動に使用されるいくつかのメソッドを提供します。 利用可能なナビゲーション メソッドおよびその移動方法を次の表に示します。これには、属性および名前空間のノードのナビゲートに使用されるメソッドは含まれません。 - 内のノードの選択の詳細については、オブジェクトを参照してください[を選択すると、評価、および XPathNavigator を使用して、一致する XML データ](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md)です。 属性と名前空間ノードの移動の詳細については、次を参照してください。[属性および XPathNavigator を使用してノードのナビゲーションを Namespace](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md)です。 + オブジェクトでノードを選択する方法については、「[XPathNavigator を使用した XML データの選択、評価、および照合](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md)」を参照してください。 属性ノードと名前空間ノードをナビゲートする方法については、「[XPathNavigator を使用する属性と名前空間のナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md)」を参照してください。 |メソッド|説明| |------------|-----------------| @@ -59,11 +62,11 @@ ms.lasthandoff: 11/21/2017 - -## 関連項目 +## 参照 [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) - [属性と Namespace XPathNavigator を使用したナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md) - [XPathNavigator による XML データを抽出します。](../../../../docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md) - [XPathNavigator による XML データに型指定された厳密にアクセスします。](../../../../docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md) + [XPathNavigator を使用する属性と名前空間のナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md) + [XpathNavigator を使用した XML データの抽出](../../../../docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md) + [厳密に型指定された XML データへの XPathNavigator を使用したアクセス](../../../../docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md) diff --git a/docs/standard/data/xml/node-sets-in-transformations.md b/docs/standard/data/xml/node-sets-in-transformations.md index 93ecaf1a510..de5359d2976 100644 --- a/docs/standard/data/xml/node-sets-in-transformations.md +++ b/docs/standard/data/xml/node-sets-in-transformations.md @@ -9,24 +9,26 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: ad034f0e-ff8b-4a71-9a4c-528c754263c4 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: e4d6d2f5a68ce5cef9937edc136e52efcd5366df -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 95df2f2888899093943feda35768694bf414de84 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 変換におけるノード セット ノード セットは、XPath (XML Path Language) 式が返す 4 つの基本データ型のうちの 1 つです。 ノード セットは、ドキュメントの順番で作成された、重複がなくソートされていないノードのコレクションであり、スタイル シートの変数に割り当てることができます。 > [!NOTE] -> - では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 - ノード セットは、XPath 式が返す 4 つの基本データ型のうちの 1 つです。 ノード セットは、ドキュメントの順番で作成された、重複がなくソートされていないノードのコレクションであり、スタイル シートの変数に割り当てることができます。 変換の `select` 属性で使用される XPath 式の結果であるこのノード セットは、XML ドキュメント オブジェクト モデル (DOM) のノード セットと同じ動作をします。 示すようにメソッドのセットを使用して設定ノードを移動することができます[ノード セット ナビゲーションを使用して XPathNavigator](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md)、結果ツリー フラグメントまたはを使用して、結果ツリー フラグメントとは異なり、移動できるようにします。 + ノード セットは、XPath 式が返す 4 つの基本データ型のうちの 1 つです。 ノード セットは、ドキュメントの順番で作成された、重複がなくソートされていないノードのコレクションであり、スタイル シートの変数に割り当てることができます。 変換の `select` 属性で使用される XPath 式の結果であるこのノード セットは、XML ドキュメント オブジェクト モデル (DOM) のノード セットと同じ動作をします。 移動に を使用する結果ツリー フラグメントと異なり、ノード セットの場合は「[Node Set Navigation Using XPathNavigator](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md)」で説明している各種のメソッドを使用してノード セット間を移動します。 スタイル シートの `variable` 要素または `parameter` 要素がノード セットとして評価される場合のノード セットに対する反復処理を、次のコード サンプルに示します。 @@ -82,7 +84,7 @@ History of Trenton Vol 3 ****** ``` -## 関連項目 +## 参照 - [XslTransform クラスによる XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) diff --git a/docs/standard/data/xml/node-types-recognized-with-xpath-queries.md b/docs/standard/data/xml/node-types-recognized-with-xpath-queries.md index 75cb7cf8ba2..3502d5e322a 100644 --- a/docs/standard/data/xml/node-types-recognized-with-xpath-queries.md +++ b/docs/standard/data/xml/node-types-recognized-with-xpath-queries.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 1d33e22d-18e5-43f8-a466-2e3d0a8dd094 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 1c1e48bbfd6388686fdb83f08668f7f0234275a5 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: db309bf0d04dfab4fd9fbdd2c8b145c1705d8428 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XPath クエリで認識されるノード型 XPath クエリで認識されるノードの型は、ドキュメント オブジェクト モデル (DOM) のノード型と同じではありません。 @@ -51,15 +54,15 @@ XPath クエリで認識されるノードの型は、ドキュメント オブ 名前空間ノード型は XPath データ モデルに追加されたノード型であり、DOM で認識されるノード型ではありません。 - 要素、属性、および名前空間ノードの移動の詳細については、次を参照してください、[ノード セット ナビゲーションを使用して XPathNavigator](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md)と[属性および XPathNavigator を使用してノードのナビゲーションを Namespace](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md) 。トピックです。 + 要素ノード、属性ノード、名前空間ノードをナビゲートする方法については、「[XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md)」と「[XPathNavigator を使用する属性と名前空間のナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md)」を参照してください。 -## 関連項目 +## 参照 [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) - [XPathNavigator による XML データを選択します。](../../../../docs/standard/data/xml/select-xml-data-using-xpathnavigator.md) - [XPathNavigator による XPath 式を評価します。](../../../../docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md) + [XPathNavigator を使用した XML データの選択](../../../../docs/standard/data/xml/select-xml-data-using-xpathnavigator.md) + [XPathNavigator による XPath 式の評価](../../../../docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md) [XPathNavigator によるノードの一致](../../../../docs/standard/data/xml/matching-nodes-using-xpathnavigator.md) [XPath クエリおよび名前空間](../../../../docs/standard/data/xml/xpath-queries-and-namespaces.md) [コンパイルされた XPath 式](../../../../docs/standard/data/xml/compiled-xpath-expressions.md) diff --git a/docs/standard/data/xml/object-comparison-using-xmlnametable.md b/docs/standard/data/xml/object-comparison-using-xmlnametable.md index 428b89443f7..c5579e460bc 100644 --- a/docs/standard/data/xml/object-comparison-using-xmlnametable.md +++ b/docs/standard/data/xml/object-comparison-using-xmlnametable.md @@ -12,18 +12,21 @@ dev_langs: - csharp - vb ms.assetid: 8d94e041-d340-4ddf-9a2c-d7319e3f4f86 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 0cd1a3bad69499b4804299adecabad3a43b5eab1 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f6c65581437bfb22cf771d66716b3dbb62dbafae +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XmlNameTable によるオブジェクトの比較 -**XmlDocuments**を作成すると、そのドキュメント用に作成された名前のテーブルがあります。 属性と要素の名前が入れられます、ドキュメントに XML が読み込まれるか、新しい要素や属性を作成、ときに、 **XmlNameTable**です。 作成することも、 **XmlDocument**既存**NameTable**別のドキュメントからです。 ときに**XmlDocuments**を受け取るコンス トラクターで作成された、 **XmlNameTable**パラメーター、ドキュメントがノード名、名前空間、およびに既に格納されているプレフィックスへのアクセス、 **XmlNameTable**です。 どのような方法で名前テーブルと名前が読み込まれたとしても、いったんテーブルに名前が格納されると、文字列比較によってではなく、オブジェクト比較を利用して高速に名前を比較できます。 名前のテーブルを使用する文字列を追加することも、です。 次のコード サンプルは、名前のテーブルを作成し、文字列を示します**MyString**テーブルに追加されています。 その後、 **XmlDocument**そのテーブル、および内の要素と属性名を使用して作成された**Myfile.xml**既存の名前テーブルに追加されます。 +**XmlDocuments** の作成時には、そのドキュメント用の名前テーブルが作成されます。 XML がドキュメントに読み込まれるか、新しい要素または属性が作成されると、その属性名と要素名が **XmlNameTable** に格納されます。 別のドキュメントからの既存の **NameTable** を使用して **XmlDocument** を作成することもできます。 **XmlNameTable** パラメーターをとるコンストラクターを使用して **XmlDocuments** を作成すると、ドキュメントは、その **XmlNameTable** に既に保存されているノード名、名前空間、プレフィックスにアクセスするようになります。 どのような方法で名前テーブルと名前が読み込まれたとしても、いったんテーブルに名前が格納されると、文字列比較によってではなく、オブジェクト比較を利用して高速に名前を比較できます。 を使用して、名前テーブルに文字列を追加することもできます。 名前テーブルを作成し、そのテーブルに **MyString** という文字列を追加するコード サンプルを次に示します。 その後、そのテーブルを使用して **XmlDocument** を作成し、**Myfile.xml** の要素名と属性名を既存の名前テーブルに追加します。 ```vb Dim nt As New NameTable() @@ -60,5 +63,5 @@ if (((object)node1.Name) == ((object)node2.Name)) 上記のように 2 つのドキュメント間で名前テーブルが渡される状況は、同じタイプのドキュメントを繰り返し処理する場合によく発生します。たとえば、XML スキーマ定義言語 (XSD) スキーマまたはドキュメント型定義 (DTD) に準拠し、同じ文字列が繰り返し使われる発注ドキュメントを e コマース サイトで処理する場合などです。 このような場合は、同じ要素名が複数のドキュメントに現れるため、同じ名前テーブルを使用することによってパフォーマンスが向上します。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/outputs-from-an-xsltransform.md b/docs/standard/data/xml/outputs-from-an-xsltransform.md index 07970be875b..62469d5482f 100644 --- a/docs/standard/data/xml/outputs-from-an-xsltransform.md +++ b/docs/standard/data/xml/outputs-from-an-xsltransform.md @@ -9,29 +9,32 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 8e149d32-4b2f-493f-9e4b-d0d93475acde -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 92bf2d7184ca2eb8b17c1d83130c66d1f33f0483 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 647f3829f4b26791c063d5646669b2fcb7ab6684 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XslTransform からの出力 スタイル シートは、`` ステートメントと `method` 属性を使って出力形式を決定できます。次の表では、 メソッドを使用して出力を書き出し、出力形式を または として宣言した場合に出力形式がどうなるかを説明します。 > [!NOTE] -> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 スタイル シートは、`` ステートメントと `method` 属性を使って出力形式を決定できます。次の表では、 メソッドを使用して出力を書き出し、出力形式を または として宣言した場合に出力形式がどうなるかを説明します。 メソッドを `` ステートメントと共に使用して出力の種類を宣言した場合に得られる結果を次の表に示します。 -|\ 属性|結果の形式| +|\ attribute|結果の形式| |-----------------------------------------|-------------------| |method="xml"|XML| |method="html"|HTML| -|method="text"|Text| +|method="text"|テキスト| > [!NOTE] > メモ: `` メソッドの出力が または である場合、 ステートメントは無視されます。 @@ -64,5 +67,5 @@ ms.lasthandoff: 10/18/2017 ## 特殊文字のエスケープ `` 記号の代わりに `<<>` を使用するなど、特殊文字を XML 形式にエスケープする必要があるかどうかを示すには、`"<"` タグを使用します。 `disable-output-escaping` オブジェクトまたは オブジェクトへの変換では 属性が無視されるため、特殊文字はこのタグの影響を受けません。 -## 関連項目 - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) diff --git a/docs/standard/data/xml/post-schema-compilation-infoset.md b/docs/standard/data/xml/post-schema-compilation-infoset.md index fd0a74b6344..bf4a2950360 100644 --- a/docs/standard/data/xml/post-schema-compilation-infoset.md +++ b/docs/standard/data/xml/post-schema-compilation-infoset.md @@ -13,18 +13,21 @@ dev_langs: - vb - cpp ms.assetid: 7f1bc7f4-401b-459f-9078-f099cc711fde -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 77fe1790a4ff2f910a740e969e458549f1fd9642 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4b59b2b59852190bd19a3c1c9536fadb7b40603e +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # スキーマのコンパイル後の情報セット -[World Wide Web Consortium (W3C) XML スキーマ勧告](http://go.microsoft.com/fwlink/?linkid=45242)情報セット (infoset) スキーマ検証前とスキーマ コンパイル後に公開する必要があります。 XML スキーマ オブジェクト モデル (SOM) は、 メソッドが呼び出される前と後について、この公開内容を調べます。 +W3C 勧告『[XML Schema](http://go.microsoft.com/fwlink/?linkid=45242)』では、スキーマ検証前とスキーマ コンパイル後に必ず公開する情報セットについて解説されています。 XML スキーマ オブジェクト モデル (SOM) は、 メソッドが呼び出される前と後について、この公開内容を調べます。 スキーマの検証前の情報セットは、スキーマの編集時に作成されます。 スキーマ コンパイル後の情報セットは、 メソッドが呼び出された後、スキーマのコンパイル時に生成され、プロパティとして公開されます。 @@ -47,5 +50,5 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[PsciSample#1](../../../../samples/snippets/csharp/VS_Snippets_Data/PsciSample/CS/PsciSample.cs#1)] [!code-vb[PsciSample#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/PsciSample/VB/PsciSample.vb#1)] -## 関連項目 +## 参照 [XML スキーマ オブジェクト モデル (SOM)](../../../../docs/standard/data/xml/xml-schema-object-model-som.md) diff --git a/docs/standard/data/xml/process-xml-data-using-linq-to-xml.md b/docs/standard/data/xml/process-xml-data-using-linq-to-xml.md index 581902d62f7..fff8ff5c15e 100644 --- a/docs/standard/data/xml/process-xml-data-using-linq-to-xml.md +++ b/docs/standard/data/xml/process-xml-data-using-linq-to-xml.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 059d6b9d-63f7-4011-9ba8-8406f0bbae7d -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: a6b7a3c452d6b29145b8a2e7b1d2a1e824aaf508 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 26258489742db3de108ddf68f68074682c30fe57 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # LINQ to XML を使用した XML データの処理 LINQ to XML は、XML データの処理を目的とした Microsoft .NET Framework version 3.5 の新しいモデルです。 LINQ to XML を使用することで、XML ドキュメントのクエリ、変更、作成、保存、シリアル化など、XML データを扱う際に必要な処理をすべて実行できます。 特に、クエリと作成の機能が役立ちます。 @@ -26,9 +29,9 @@ LINQ to XML は、XML データの処理を目的とした Microsoft .NET Framew LINQ to XML では、.NET Framework version 3.5 の統合言語クエリ (LINQ) テクノロジを利用しています。 LINQ は C# および Visual Basic の言語構文を拡張したもので、潜在的には任意のデータ ストアまで拡張できる強力なクエリ機能を備えています。 - 参照してください[LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13)詳細については、使用、および参照の[クエリ (LINQ: Language-Integrated)](http://msdn.microsoft.com/library/a73c4aec-5d15-4e98-b962-1274021ea93d) LINQ フレームワークの概要についてはします。 + LINQ の詳細な使用方法については、「[LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13)」を参照してください。LINQ フレームワークの概要については、「[LINQ (Language-Integrated Query)](http://msdn.microsoft.com/library/a73c4aec-5d15-4e98-b962-1274021ea93d)」(LINQ (統合言語クエリ)) を参照してください。 -## 関連項目 +## 参照 [LINQ to XML とDOM](http://msdn.microsoft.com/library/19b5ed02-feb2-455a-8897-f7f0fd76aca3) diff --git a/docs/standard/data/xml/processing-xml-data-in-memory.md b/docs/standard/data/xml/processing-xml-data-in-memory.md index cfbb4a37adb..a07abf59b4a 100644 --- a/docs/standard/data/xml/processing-xml-data-in-memory.md +++ b/docs/standard/data/xml/processing-xml-data-in-memory.md @@ -9,33 +9,36 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 1bbb4d05-ead7-4bda-8ece-f86d35c57ad4 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: ec4ccbff095071b279e07cee6a1aab3ca830423f -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 9fc2f9e7a9ba232c062b12e8c1aeb72eece760e2 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # メモリ内の XML データの処理 -Microsoft .NET Framework には、XML データを処理するための 3 つのモデルが含まれています。クラス、クラス、および[LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13)です。 +Microsoft .NET Framework には、XML データを処理するためのモデルとして、 クラス、 クラス、[LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13) の 3 つが用意されています。 クラスは、W3C ドキュメント オブジェクト モデル (DOM) 勧告の DOM Level 1 Core および DOM Level 2 Core を実装しています。 DOM は XML ドキュメントのメモリ内 (キャッシュ) ツリー表現です。 およびその関連クラスを使用すると、XML ドキュメントの作成、データの読み込みとアクセス、データの変更、および変更の保存が可能です。 クラスは、XPath データ モデルに基づく、読み取り専用のメモリ内データ ストアです。 クラスは、読み取り専用の クラスと クラス内の XML ドキュメント全体にカーソル モデルを使用して、いくつかの編集オプションとナビゲーション機能を提供します。 - [LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13) .NET Framework version 3.5 XML データを処理するために新しいモデルです。 利用する、インメモリ モデルである[クエリ (LINQ: Language-Integrated)](http://msdn.microsoft.com/library/a73c4aec-5d15-4e98-b962-1274021ea93d)です。 LINQ では C# および Visual Basic の言語構文を拡張することで、新しいクエリ機能を実現しています。 + [LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13) は、XML データの処理を目的とした Microsoft .NET Framework version 3.5 の新しいモデルです。 [LINQ (統合言語クエリ)](http://msdn.microsoft.com/library/a73c4aec-5d15-4e98-b962-1274021ea93d) を活用するメモリ内モデルです。 LINQ では C# および Visual Basic の言語構文を拡張することで、新しいクエリ機能を実現しています。 ## このセクションの内容 - [DOM モデルを使用して XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-dom-model.md) + [DOM モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-dom-model.md) とその関連クラスを使用した XML データの処理について説明します。 [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) 、および クラスを使用した XML データの処理について説明します。 - [LINQ to XML を使用して XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-linq-to-xml.md) + [LINQ to XML を使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-linq-to-xml.md) LINQ to XML の概要を簡単に説明し、LINQ to XML に関する参照先のリンクを示します。 ## 関連項目 diff --git a/docs/standard/data/xml/reading-an-xml-document-into-the-dom.md b/docs/standard/data/xml/reading-an-xml-document-into-the-dom.md index 64590fe53ae..6ff4fcbee8d 100644 --- a/docs/standard/data/xml/reading-an-xml-document-into-the-dom.md +++ b/docs/standard/data/xml/reading-an-xml-document-into-the-dom.md @@ -12,15 +12,18 @@ dev_langs: - csharp - vb ms.assetid: a4fb291f-5630-49ba-a49a-5b66c3b71e49 -caps.latest.revision: "3" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: b8844705b492574443ff4f37de33ccaf1f5fedd7 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: bbbd61cbe22eb2c8e54daad863ad35ef076c1bc3 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XML ドキュメントの DOM への読み取り XML 情報は、さまざまな形式からメモリに読み取られます。 XML 情報は、文字列、ストリーム、URL、テキスト リーダー、および から派生したクラスから読み取ることができます。 @@ -31,9 +34,9 @@ XML 情報は、さまざまな形式からメモリに読み取られます。 |Subject|トピック| |-------------|-----------| -|空白ノードの作成|DOM を読み込むために使用したオブジェクトに応じて、DOM で生成される空白ノードと有意の空白ノードの処理が異なります。 詳細については、次を参照してください。[空白および有意の空白処理 DOM を読み込むとき](../../../../docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md)です。| -|特定ノード以降の XML の読み込み、または XML ドキュメント全体の読み込み|使用して、 DOM に特定のノードからメソッドのデータを読み込むことができます 詳細については、次を参照してください。[リーダーからのデータの読み込み](../../../../docs/standard/data/xml/load-data-from-a-reader.md)です。| -|XML の読み込み時の検証|DOM に読み込む XML データは、読み込みながら検証することができます。 これは検証型の を使用して行えます。 読み込まれると、XML を検証の詳細については、次を参照してください。 [DOM における XML ドキュメントの検証](../../../../docs/standard/data/xml/validating-an-xml-document-in-the-dom.md)です。| +|空白ノードの作成|DOM を読み込むために使用したオブジェクトに応じて、DOM で生成される空白ノードと有意の空白ノードの処理が異なります。 詳細については、「[DOM を読み込むときの空白および有意の空白の処理](../../../../docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md)」を参照してください。| +|特定ノード以降の XML の読み込み、または XML ドキュメント全体の読み込み| メソッドを使用して、データを特定のノードから DOM に読み込むことができます。 詳細については、「[リーダーからのデータの読み込み](../../../../docs/standard/data/xml/load-data-from-a-reader.md)」を参照してください。| +|XML の読み込み時の検証|DOM に読み込む XML データは、読み込みながら検証することができます。 これは検証型の を使用して行えます。 読み込み時の XML の検証の詳細については、「[DOM における XML ドキュメントの検証](../../../../docs/standard/data/xml/validating-an-xml-document-in-the-dom.md)」を参照してください。| メソッドによって XML を読み込む例を次に示します。読み込まれたデータは、`data.xml` というテキスト ファイルに保存されます。 @@ -77,5 +80,5 @@ public class Sample } ``` -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/reading-and-writing-xml-schemas.md b/docs/standard/data/xml/reading-and-writing-xml-schemas.md index 459923858d0..56a79bdca8a 100644 --- a/docs/standard/data/xml/reading-and-writing-xml-schemas.md +++ b/docs/standard/data/xml/reading-and-writing-xml-schemas.md @@ -13,15 +13,18 @@ dev_langs: - vb - cpp ms.assetid: b5757c4a-ea59-467e-ac62-be2bfe24eb77 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: aaf63acbb58fd86f7fa9a5dc3dce7508d90cfada -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 96f8cf924ffe510e1fea4d21fe86ca860fe8fab0 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XML スキーマの読み取りと書き込み スキーマ オブジェクト モデル (SOM) API を使用すると、ファイルまたは他のソースから XML スキーマ定義言語 (XSD) スキーマを読み取ったり、書き込んだりできます。また、W3C (World Wide Web Consortium) 勧告『XML Schema』で定義された構造に割り当てられた 名前空間のクラスを使用してメモリ内に XML スキーマを作成することもできます。 @@ -29,7 +32,7 @@ ms.lasthandoff: 11/21/2017 ## XML スキーマの読み取りと書き込み クラスでは、 メソッドおよび メソッドを利用して XML スキーマの読み取りと書き込みを行うことができます。 メソッドは XML スキーマを表す オブジェクトを返し、オプションの をパラメーターとして受け取って XML スキーマの読み取り時に発生するスキーマ検証に関する警告とエラーを処理します。 - メソッドは および オブジェクトに XML スキーマを書き込んで、オプションで オブジェクトをパラメーターとして受け取ることができます。 は、XML スキーマ内で検出される名前空間の処理に使用されます。 詳細については、クラスを参照してください[XML ドキュメント内の名前空間を管理する](../../../../docs/standard/data/xml/managing-namespaces-in-an-xml-document.md)です。 + メソッドは および オブジェクトに XML スキーマを書き込んで、オプションで オブジェクトをパラメーターとして受け取ることができます。 は、XML スキーマ内で検出される名前空間の処理に使用されます。 クラスの詳細については、「[XML ドキュメントでの名前空間の管理](../../../../docs/standard/data/xml/managing-namespaces-in-an-xml-document.md)」を参照してください。 次のコード サンプルでは、XML スキーマのファイルからの読み込みとファイルへの書き込みを説明します。 このコード サンプルは、`example.xsd` メソッドを使用して `static` オブジェクトに ファイルを読み込み、その後、このファイルをコンソールに出力して新しい `new.xsd` ファイルに書き込みます。 また、このコード サンプルでは、`static` メソッドに をパラメーターとして指定して、XML スキーマを読み込む際に検出されるスキーマ検証時の警告やエラーの処理を行います。 を指定しないと (`null`)、警告やエラーは報告されません。 @@ -54,12 +57,12 @@ ms.lasthandoff: 11/21/2017 ``` -## 関連項目 +## 参照 [XML スキーマ オブジェクト モデルの概要](../../../../docs/standard/data/xml/xml-schema-object-model-overview.md) [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md) [XML スキーマの走査](../../../../docs/standard/data/xml/traversing-xml-schemas.md) [XML スキーマの編集](../../../../docs/standard/data/xml/editing-xml-schemas.md) - [インクルードまたは XML スキーマのインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) - [スキーマのコンパイルのための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) - [スキーマ コンパイル後の Infoset](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) + [XML スキーマのインクルードまたはインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマのコンパイル後の情報セット](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) [XML ドキュメントでの名前空間の管理](../../../../docs/standard/data/xml/managing-namespaces-in-an-xml-document.md) diff --git a/docs/standard/data/xml/recoverable-xslt-errors.md b/docs/standard/data/xml/recoverable-xslt-errors.md index c5bdcb8e040..dc0aa4c9da8 100644 --- a/docs/standard/data/xml/recoverable-xslt-errors.md +++ b/docs/standard/data/xml/recoverable-xslt-errors.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 484929b0-fefb-4629-87ee-ebdde70ff1f8 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 78149e0e1c84a457f68b67ea8fe4c82098e794ad -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4564530cd173793519471c78105d0394595f6d5c +ms.sourcegitcommit: 91691981897cf8451033cb01071d8f5d94017f97 ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/09/2018 --- # XSLT エラーの解決 W3C 勧告『XSL Transformations (XSLT) Version 1.0』には、対処方法を実装者が決定できる事項があります。 このような事項は、随意動作と見なされています。 たとえば、XSLT 1.0 Recommendation は、セクション 7.3「Creating Processing Instructions」で、`xsl:processing-instruction` の内容をインスタンス化したときに、テキスト ノード以外のノードが作成されるのはエラーであるとしています。 いくつかの問題に関しては、プロセッサがエラー状態から回復するときにどのような対処をするべきかを、XSLT 1.0 Recommendation が規定しています。 セクション 7.3 に記述されている問題に関しては、W3C では、作成されたノードとその内容を無視することで、このエラーから回復できるとしています。 @@ -29,7 +32,7 @@ W3C 勧告『XSL Transformations (XSLT) Version 1.0』には、対処方法を - エラーは、この状態に対する例外が発生したことを示します。 -- 参照は含まれて、 [W3C XSL Transformations (XSLT) Version 1.0 Recommendation](http://go.microsoft.com/fwlink/?LinkId=49919)と[W3C XSL Transformations (XSLT) Version 1.0 Specification Errata](http://go.microsoft.com/fwlink/?LinkId=49917)です。 +- 詳細については、[W3C の XSL Transformations (XSLT) Version 1.0 勧告](http://www.w3.org/TR/xslt)に関するページと [W3C の「XSL Transformations (XSLT) Version 1.0 Specification Errata」(XSL Transformations (XSLT) Version 1.0 仕様の正誤表)](http://www.w3.org/1999/11/REC-xslt-19991116-errata/) を参照してください。 |XSLT の状態|セクション|XslCompiledTransform の動作| |--------------------|-------------|-----------------------------------| @@ -59,7 +62,7 @@ W3C 勧告『XSL Transformations (XSLT) Version 1.0』には、対処方法を |`value` の `xsl:number` 属性が NAN、無限、または 0.5 未満である。|errata 24|復元| |document 関数への 2 番目の引数ノード セットが空であり、URI 参照が相対 URI 参照である。|errata 14|復元| - *この動作は異なる、クラスです。 詳細については、次を参照してください。[実装のクラスの随意動作、XslTransform](../../../../docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md)です。 + * この動作は、 クラスの動作とは異なります。 詳細については、「[XslTransform クラスの随意動作の実装](../../../../docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md)」を参照してください。 -## 関連項目 +## 参照 [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) diff --git a/docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md index 7243d530f87..c14adbc8a0c 100644 --- a/docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md +++ b/docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md @@ -12,22 +12,25 @@ dev_langs: - csharp - vb ms.assetid: 9f436bca-1b96-494b-a6d2-e102c7551752 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 29faf92b26908a37fb122dec00b2d4d6b5f3bf16 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4bc7c2de8bec50293a815195416575d20d648706 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XPathNavigator による XML データの削除 クラスは、XML ドキュメントからノードを削除するためのメソッドのセットを提供します。 これらのメソッドを使用するには、 オブジェクトが編集可能である必要があります。つまり、その プロパティを `true` にする必要があります。 XML ドキュメントを編集できる オブジェクトは、 クラスの メソッドによって作成されます。 クラスによって作成される オブジェクトは読み取り専用であり、 オブジェクトによって作成される オブジェクトの編集メソッドを使用しようとすると、 が発生します。 - 編集可能な作成の詳細については、オブジェクトを参照してください[XPathDocument および XmlDocument を使用して XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)です。 + 編集可能な オブジェクトの作成方法については、「[XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)」を参照してください。 ## ノードの削除 クラスは、XML ドキュメントからノードを削除する メソッドを提供します。 @@ -183,15 +186,15 @@ Console.WriteLine(navigator.OuterXml); プロパティは、与えられた XML の解析済みの内容を使用して `string` オブジェクトの現在位置にある子ノードの XML マークアップを変更します。 同様に、 プロパティは、 オブジェクトの現在位置にある子ノードと現在のノード自体の XML マークアップを変更します。 - このトピックで説明したメソッドに加えて、 プロパティと プロパティは、XML ドキュメントからノードと値を削除するために使用できます。 使用しての詳細については、、ノードを変更するプロパティを参照してください、 [XPathNavigator を使用して変更の XML データ](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md)トピックです。 + このトピックで説明したメソッドに加えて、 プロパティと プロパティは、XML ドキュメントからノードと値を削除するために使用できます。 プロパティと プロパティを使用してノードを変更する方法の詳細については「[XpathNavigator による XML データの変更](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md)」のトピックを参照してください。 ## XML ドキュメントの保存 - ここに記載されているメソッドによる オブジェクトに対する変更の保存は、 クラスのメソッドを使用して実行されます。 に対する変更の保存の詳細については、オブジェクトを参照してください[ドキュメントの保存と書き込み](../../../../docs/standard/data/xml/saving-and-writing-a-document.md)です。 + ここに記載されているメソッドによる オブジェクトに対する変更の保存は、 クラスのメソッドを使用して実行されます。 オブジェクトに対する変更の保存に関する詳細については、「[ドキュメントの保存と書き込み](../../../../docs/standard/data/xml/saving-and-writing-a-document.md)」を参照してください。 -## 関連項目 +## 参照 [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) - [XPathNavigator による XML データを挿入します。](../../../../docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md) - [XPathNavigator による XML データを変更します。](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データの挿入](../../../../docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md) + [XpathNavigator による XML データの変更](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md) diff --git a/docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md b/docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md index b08c6fbe07c..a231617b4c8 100644 --- a/docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md +++ b/docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 7ede6f9e-a3ac-49a4-8488-ab8360a44aa4 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: b4ca08d8080c2116ce05634a544c91780869b165 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 967344db880347bde94330912bc5689c57b29921 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # DOM の要素ノードからの属性の削除 属性を削除するには、さまざまな方法があります。 その 1 つとして、属性コレクションから属性を削除する方法があります。 属性コレクションから属性を削除するには、次の手順を実行します。 @@ -42,9 +45,9 @@ ms.lasthandoff: 10/18/2017 もう 1 つの方法として、要素を取得し、属性コレクションから属性を取得して、属性ノードを直接削除する方法もあります。 属性コレクションから属性を取得するには、名前 (`XmlAttribute attr = attrs["attr_name"];`)、インデックス (`XmlAttribute attr = attrs[0];`)、または名前空間を指定した完全修飾名 (`XmlAttribute attr = attrs["attr_localName", "attr_namespace"]`) を使用できます。 - 既定の属性としてドキュメント型定義 (DTD) に定義されている属性を削除するときは、使用するメソッドにかかわらず、特別な制限が適用されます。 既定の属性は、その属性が含まれている要素を削除しない限り削除できません。 既定の属性が宣言されている要素には、常に既定の属性が存在します。 または から既定の属性を削除すると、代わりの属性が要素の に挿入され、宣言されている既定値に初期化されます。 たとえば、`` として定義された要素がある場合、`book` 要素には、宣言された 3 つの既定の属性が設定されます。 XML ドキュメント オブジェクト モデル (DOM) の実装では、ことが保証されます限りこれ`book`要素が存在し、これら 3 つの既定の属性がある`att1`、 `att2`、および`att3`です。 + 既定の属性としてドキュメント型定義 (DTD) に定義されている属性を削除するときは、使用するメソッドにかかわらず、特別な制限が適用されます。 既定の属性は、その属性が含まれている要素を削除しない限り削除できません。 既定の属性が宣言されている要素には、常に既定の属性が存在します。 または から既定の属性を削除すると、代わりの属性が要素の に挿入され、宣言されている既定値に初期化されます。 たとえば、`` として定義された要素がある場合、`book` 要素には、宣言された 3 つの既定の属性が設定されます。 XML ドキュメント オブジェクト モデル (DOM) の実装によって、この `book`要素が存在する限り、`att1`、`att2`、および `att3` という 3 つの既定の属性が存在することが保証されます。 を呼び出した場合、 メソッドにより、属性の値が String.Empty に設定されます。これは、値のない属性が存在できないためです。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/removing-node-content-in-the-dom.md b/docs/standard/data/xml/removing-node-content-in-the-dom.md index f07151a1bc2..3abd2e95601 100644 --- a/docs/standard/data/xml/removing-node-content-in-the-dom.md +++ b/docs/standard/data/xml/removing-node-content-in-the-dom.md @@ -9,18 +9,21 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 615d81a7-f44f-416c-a9ab-bfe03f85e6e4 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 76be90829a414b091d3b311b96bf9bab9a2b56ed -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 45a8d5006599b23165a174770f4d72974ea0e5ec +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # DOM のノード コンテンツの削除 - を継承するノード型、つまり 、および ノード型では、ノードから文字範囲を削除する メソッドを使用して文字を削除できます。 コンテンツを完全に削除するには、そのコンテンツが含まれているノードを削除します。 ノードを保持する必要があり、コンテンツが正しくない場合は、そのコンテンツを変更します。 ノードのコンテンツを変更する方法については、次を参照してください。[ノードの変更、コンテンツ、および XML ドキュメント内の値](../../../../docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md)です。 + を継承するノード型、つまり 、および ノード型では、ノードから文字範囲を削除する メソッドを使用して文字を削除できます。 コンテンツを完全に削除するには、そのコンテンツが含まれているノードを削除します。 ノードを保持する必要があり、コンテンツが正しくない場合は、そのコンテンツを変更します。 ノードのコンテンツを変更する方法については、「[XML ドキュメントのノード、コンテンツ、値の変更](../../../../docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md)」を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md b/docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md index 93262f3e933..0ea04628bbd 100644 --- a/docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md +++ b/docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md @@ -9,20 +9,23 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: d818a29a-6ee5-4725-97c4-78cf60a156b6 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 5bc8d7712693ba200e9e7e2a91af9015579193f1 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 6d33a3f18617eb7f3fc083f29439f11eb81a7761 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XML ドキュメントからのノード、コンテンツ、値の削除 -XML ドキュメント オブジェクト モデル (DOM) がメモリに読み込まれたら、ツリーからノードを削除したり、特定のノード型からコンテンツや値を削除したりできます。 ドキュメントから葉ノードまたはノード サブツリー全体を削除する方法については、次を参照してください。 [DOM からノードを削除する](../../../../docs/standard/data/xml/removing-nodes-from-the-dom.md)です。 要素の属性を削除する方法については、次を参照してください。 [DOM の要素ノードからの属性の削除](../../../../docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md)です。 ノードのコンテンツを削除するが、ツリーにノードを残す方法については、次を参照してください。 [DOM のノードのコンテンツを削除する](../../../../docs/standard/data/xml/removing-node-content-in-the-dom.md)です。 +XML ドキュメント オブジェクト モデル (DOM) がメモリに読み込まれたら、ツリーからノードを削除したり、特定のノード型からコンテンツや値を削除したりできます。 ドキュメントから葉ノードまたはノード サブツリー全体を削除する方法については、「[DOM からのノードの削除](../../../../docs/standard/data/xml/removing-nodes-from-the-dom.md)」を参照してください。 要素の属性を削除する方法については、「[DOM の要素ノードからの属性の削除](../../../../docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md)」を参照してください。 ノードのコンテンツだけを削除してツリーにノードを残す方法については、「[DOM のノード コンテンツの削除](../../../../docs/standard/data/xml/removing-node-content-in-the-dom.md)」を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) - [XML ドキュメントにノードを挿入](../../../../docs/standard/data/xml/inserting-nodes-into-an-xml-document.md) - [ノード、コンテンツ、および XML ドキュメント内の値を変更します。](../../../../docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md) + [XML ドキュメントへのノードの挿入](../../../../docs/standard/data/xml/inserting-nodes-into-an-xml-document.md) + [XML ドキュメントのノード、コンテンツ、値の変更](../../../../docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md) diff --git a/docs/standard/data/xml/removing-nodes-from-the-dom.md b/docs/standard/data/xml/removing-nodes-from-the-dom.md index 578c9910bb8..005a9c4c657 100644 --- a/docs/standard/data/xml/removing-nodes-from-the-dom.md +++ b/docs/standard/data/xml/removing-nodes-from-the-dom.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 0a98e0ca-0555-45c1-ab69-0d8d20ca1abd -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 0885d53e737153448fabfd394d49bfdc793e0599 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 866859ed1104d24c225d4daa3776548112417fde +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # DOM からのノードの削除 XML ドキュメント オブジェクト モデル (DOM) からノードを削除するには、 メソッドを使用して特定のノードを削除します。 ノードを削除すると、削除しようとしたノードがリーフ ノードでない場合は、そのノードに含まれるサブツリーも削除されます。 @@ -26,7 +29,7 @@ XML ドキュメント オブジェクト モデル (DOM) からノードを削 を使用している場合は、 メソッドを使用してノードを削除できます。 - 属性を削除するを参照してください。 [DOM の要素ノードからの属性の削除](../../../../docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md)です。 + 属性を削除するには、「[DOM の要素ノードからの属性の削除](../../../../docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md)」を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/resolving-external-resources.md b/docs/standard/data/xml/resolving-external-resources.md index b6ef2cb80c8..65cf3a0a7ca 100644 --- a/docs/standard/data/xml/resolving-external-resources.md +++ b/docs/standard/data/xml/resolving-external-resources.md @@ -9,55 +9,58 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: ad3fa320-4b8f-4e5c-b549-01157591007a -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 824a35ee5d4ecafc45167ff3f4bc89802af4ed96 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c711cbd7b563bf647d7b4fb90873a396ddfaefdf +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 外部リソースの解決 -**XmlResolver**のプロパティ、 **XmlDocument**によって使用される、 **XmlDocument**外部ドキュメント型など、XML データにインラインではないリソースを見つけるためのクラス定義 (Dtd)、エンティティ、およびスキーマです。 これらのリソースは、ネットワーク上やローカル ドライブ上にあり、URI (Uniform Resource Identifier) で識別できます。 これにより、 **XmlDocument**解決するのには**EntityReference**ノードがドキュメント内に存在し、外部の DTD またはスキーマに従ってドキュメントを検証します。 +**XmlDocument** クラスでは、外部のドキュメント型定義 (DTD)、エンティティ、スキーマなど、XML データのインラインでないリソースを検索するときに **XmlDocument** の **XmlResolver** プロパティを使用します。 これらのリソースは、ネットワーク上やローカル ドライブ上にあり、URI (Uniform Resource Identifier) で識別できます。 そのため、**XmlDocument** は、ドキュメント内にある **EntityReference** ノードを解決し、外部の DTD またはスキーマに基づいてドキュメントを検証することができます。 ## 完全に信頼されている XmlDocument - **XmlResolver**プロパティの機能に影響、 **XmlDocument.Load**メソッドです。 以下の表方法、 **XmlDocument.XmlResolver**プロパティの動作時に、 **XmlDocument**オブジェクトが完全に信頼されています。 次の表に、 **XmlDocument.Load**メソッドの負荷への入力が、 **TextReader**、**文字列**、**ストリーム**、または**URI**です。 次の表には適用されません、**ロード**メソッド場合、 **XmlDocument**から読み込まれた、 **XmlReader**です。 + **XmlResolver** プロパティは、**XmlDocument.Load** メソッドの機能に影響を与えることがあります。 **XmlDocument** オブジェクトが完全に信頼されている場合の **XmlDocument.XmlResolver** プロパティの動作を次の表に示します。 Load への入力が **TextReader**、**String**、**Stream**、または **URI** である場合の **XmlDocument.Load** メソッドが対象です。 **XmlDocument** が **XmlReader** から読み込まれた場合の **Load** メソッドは対象外です。 |XmlResolver プロパティ|関数|メモ| |--------------------------|--------------|-----------| -|プロパティに設定する**XmlResolver**以前に作成を既に設定されているユーザーがプロパティを持つクラス。|**XmlDocument**を使用して、 **XmlResolver** Dtd、エンティティ、およびスキーマなどの外部リソースへの参照を解決するのには、ファイル名を解決するのにを指定します。

**XmlResolver**は追加または内のノードを編集するときに必要な外部のリソースを解決するときにも使用、 **XmlDocument**です。|**XmlResolver**に指定された、 **XmlDocument**外部リソースの検索し、解決に必要なときに使用される競合回避モジュールします。| -|プロパティに設定**null** (**Nothing** Microsoft Visual Basic .NET で)。|外部のスキーマや DTD の検索など、外部リソースを必要とする機能はサポートされていません。 外部エンティティの解決も行われず、解決が必要なエンティティ ノードの挿入などの編集機能もサポートされません。|**XmlDocument**負荷のファイルを匿名およびその他のリソースを解決するのには行われません。| -|プロパティが設定されておらず、既定状態のままである。|**XmlUrlResolver**資格情報のインスタンス化されで使用されるで、NULL、 **XmlDocument**外部の Dtd、エンティティ、および、スキーマを検索するファイル名を解決するときに、 **null**ノードの編集時に資格情報が使用されます。|| +|プロパティが、以前作成され、ユーザーの設定したプロパティを持っている **XmlResolver** クラスに設定されている。|**XmlDocument** は、ファイル名を解決するために指定された **XmlResolver** を使用し、DTD、エンティティ、スキーマなどの外部リソースへの参照を解決します。

**XmlResolver** は、**XmlDocument** のノードの追加や編集に必要な外部リソースを解決するときにも使用されます。|**XmlDocument** に指定された **XmlResolver** は、外部リソースの検索と解決が必要な場合に常に使用されるリゾルバーです。| +|プロパティが **null** (Microsoft Visual Basic .NET では **Nothing**) に設定されている。|外部のスキーマや DTD の検索など、外部リソースを必要とする機能はサポートされていません。 外部エンティティの解決も行われず、解決が必要なエンティティ ノードの挿入などの編集機能もサポートされません。|**XmlDocument** は、ファイルを匿名で読み込みます。他のリソースを解決しようとはしません。| +|プロパティが設定されておらず、既定状態のままである。|ファイル名を解決したり、外部の DTD、エンティティ、スキーマを検索するときは、NULL 資格情報を持つ **XmlUrlResolver** のインスタンスが作成され、**XmlDocument** によって使用されます。ノードを編集するときは、**null** 資格情報が使用されます。|| - 次の表に、 **XmlDocument.Load**メソッドとへの入力、**ロード**は、 **XmlReader**と**XmlDocument**は完全に信頼します。 + **Load** への入力が **XmlReader** であり、**XmlDocument** が完全に信頼されている場合の **XmlDocument.Load** メソッドを次の表に示します。 |XmlResolver プロパティ|関数|メモ| |--------------------------|--------------|-----------| -|**XmlResolver**によって使用されるクラス、 **XmlDocument**によって使用されている同じクラスには、 **XmlReader**です。|**XmlDocument**を使用して、 **XmlResolver**に割り当てられた、 **XmlReader**です。

**XmlDocument.Resolver**プロパティに関係なく、設定することはできません、 **XmlDocument**が取得するための信頼レベルを**XmlResolver**から、 **XmlReader**です。 設定をオーバーライドしようとすることはできません、 **XmlReaders**' **XmlResolver**を設定して、 **XmlResolver**のプロパティ、 **XmlDocument**.|**XmlReader**できます、 **XmlTextReader**、 **XmlValidatingReader**、またはカスタム記述リーダー。 使用するリーダーでエンティティ解決がサポートされている場合は、外部エンティティが解決されます。 渡されたリーダーでエンティティ参照がサポートされていない場合は、エンティティ参照は解決されません。| +|**XmlDocument** で使用される **XmlResolver** クラスが、**XmlReader** で使用されるクラスと同じである。|**XmlDocument** は、**XmlReader** に割り当てられた **XmlResolver** を使用します。

**XmlReader** から **XmlResolver** を取得しているため、**XmlDocument** の信頼レベルにかかわらず、**XmlDocument.Resolver** プロパティは設定できません。 **XmlDocument** の **XmlResolver** プロパティを設定することによって **XmlReaders** の **XmlResolver** の設定をオーバーライドすることはできません。|**XmlReader** は、**XmlTextReader**、**XmlValidatingReader**、または独自に作成したリーダーにすることができます。 使用するリーダーでエンティティ解決がサポートされている場合は、外部エンティティが解決されます。 渡されたリーダーでエンティティ参照がサポートされていない場合は、エンティティ参照は解決されません。| ## 信頼性の高くない XmlDocument - 次の表に、どのように**XmlDocument.XmlResolver**プロパティ オブジェクトが信頼度の低い場合の動作です。 このテーブルに適用されます、 **XmlDocument.Load**メソッドの負荷への入力が、 **TextReader**、**文字列**、**ストリーム**、または**URI**です。 次の表には適用されません、**ロード**メソッド場合、 **XmlDocument**から読み込まれた、 **XmlReader**です。 + オブジェクトの信頼性が高くない場合の **XmlDocument.XmlResolver** プロパティの動作を次の表に示します。 Load への入力が **TextReader**、**String**、**Stream**、または **URI** である場合の **XmlDocument.Load** メソッドが対象です。 **XmlDocument** が **XmlReader** から読み込まれた場合の **Load** メソッドは対象外です。 |XmlResolver プロパティ|関数|メモ| |--------------------------|--------------|-----------| -|信頼度の低いシナリオでは、 **XmlResolver**プロパティが null 以外に設定することはできません。|**XmlUrlResolver**で**null**資格情報がインスタンス化されで使用される、 **XmlDocument**外部 Dtd、エンティティを検索するファイル名を解決するときに、スキーマ、および**null**ノードの編集時に資格情報が使用されます。|この動作は、動作と同じ場合に、 **XmlResolver**プロパティが設定されておらず左既定の状態。

**XmlDocument**すべての操作を匿名のアクセス許可を使用します。| -|プロパティに設定**null** (**Nothing** Microsoft Visual Basic .NET で)。|外部のスキーマや DTD の検索など、外部リソースを必要とする機能はサポートされていません。 外部エンティティの解決も行われず、解決が必要なエンティティ ノードの挿入などの編集機能もサポートされません。|このプロパティが**null**に関係なく場合でも同じの動作は、 **XmlDocument**が完全に信頼されているか、信頼度の低い。| -|プロパティが設定されておらず、既定状態のままである。|**XmlUrlResolver**で**null**資格情報がインスタンス化されで使用される、 **XmlDocument**外部 Dtd、エンティティを検索するファイル名を解決するときに、スキーマ、および**null**ノードの編集時に資格情報が使用されます。|**XmlDocument**すべての操作を匿名のアクセス許可を使用します。| +|信頼性が高くないシナリオでは、**XmlResolver** プロパティは null 以外に設定できない。|ファイル名を解決したり、外部の DTD、エンティティ、スキーマを検索するときは、**null** 資格情報を持つ **XmlUrlResolver** のインスタンスが作成され、**XmlDocument** によって使用されます。ノードを編集するときは、**null** 資格情報が使用されます。|この動作は、**XmlResolver** プロパティが設定されておらず、既定状態のままである場合と同じ動作になります。

**XmlDocument** では、すべての処理で、匿名のアクセス許可を使用します。| +|プロパティが **null** (Microsoft Visual Basic .NET では **Nothing**) に設定されている。|外部のスキーマや DTD の検索など、外部リソースを必要とする機能はサポートされていません。 外部エンティティの解決も行われず、解決が必要なエンティティ ノードの挿入などの編集機能もサポートされません。|プロパティが **null** の場合の動作は、**XmlDocument** の信頼性の高低に関係なく、同じです。| +|プロパティが設定されておらず、既定状態のままである。|ファイル名を解決したり、外部の DTD、エンティティ、スキーマを検索するときは、**null** 資格情報を持つ **XmlUrlResolver** のインスタンスが作成され、**XmlDocument** によって使用されます。ノードを編集するときは、**null** 資格情報が使用されます。|**XmlDocument** では、すべての処理で、匿名のアクセス許可を使用します。| - このテーブルに適用されます、 **XmlDocument.Load**メソッドとへの入力、**ロード**は、 **XmlReader**、および**XmlDocument**は信頼度の低い。 + **Load** への入力が **XmlReader** であり、**XmlDocument** の信頼性が高くない場合の **XmlDocument.Load** メソッドを次の表に示します。 |XmlResolver プロパティ|関数|メモ| |--------------------------|--------------|-----------| -|**XmlResolver**によって使用されるクラス、 **XmlDocument**はによって使用されているものと同じ、 **XmlReader**です。|**XmlDocument**を使用して、 **XmlResolver**に割り当てられた、 **XmlReader**です。

**XmlDocument.Resolver**プロパティに関係なく、設定することはできません、 **XmlDocument**が取得するための信頼レベルを**XmlResolver**から、 **XmlReader**です。 設定をオーバーライドしようとすることはできません、 **XmlReaders** **XmlResolver**を設定して、 **XmlResolver**のプロパティ、 **XmlDocument**.|**XmlReader**できます、 **XmlTextReader**検証、 、またはカスタム記述リーダー。 使用するリーダーでエンティティ解決がサポートされている場合は、外部エンティティが解決されます。 渡されたリーダーでエンティティ参照がサポートされていない場合は、エンティティ参照は解決されません。| +|**XmlDocument** で使用される **XmlResolver** クラスが、**XmlReader** で使用されるクラスと同じである。|**XmlDocument** は、**XmlReader** に割り当てられた **XmlResolver** を使用します。

**XmlReader** から **XmlResolver** を取得しているため、**XmlDocument** の信頼レベルにかかわらず、**XmlDocument.Resolver** プロパティは設定できません。 **XmlDocument** の **XmlResolver** プロパティを設定することによって **XmlReaders** の **XmlResolver** の設定をオーバーライドすることはできません。|**XmlTextReader**、検証用の 、または独自に作成したリーダーを **XmlTextReader** として使用できます。 使用するリーダーでエンティティ解決がサポートされている場合は、外部エンティティが解決されます。 渡されたリーダーでエンティティ参照がサポートされていない場合は、エンティティ参照は解決されません。| XmlResolver が正しい資格情報を持つように設定すれば、外部リソースにアクセスできます。 > [!NOTE] -> 取得する方法はありません、 **XmlResolver**プロパティです。 これにより、ユーザーが再利用することを妨げる、 **XmlResolver**資格情報が設定されています。 また場合、 **XmlTextReader**または検証読み込みに使用された、 **XmlDocument**と**XmlDocument**が設定されているから競合回避モジュール リゾルバーこれらのリーダーがキャッシュされていない、 **XmlDocument**後、**ロード**フェーズ、これも、セキュリティ リスクがあるためです。 +> **XmlResolver** プロパティを取得する方法はありません。 これは、資格情報が設定されている **XmlResolver** をユーザーが再利用するのを防ぐためです。 また、**XmlTextReader** または検証用の を使用して、リゾルバーが設定されている **XmlDocument** を読み込んだ場合、**XmlDocument** は、セキュリティ リスクを回避するために、**Load** フェーズの後、これらのリーダーのリゾルバーをキャッシュしません。 詳細については、 のリファレンス ページの「解説」を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/result-tree-fragment-in-transformations.md b/docs/standard/data/xml/result-tree-fragment-in-transformations.md index fd5d1c12fcb..b7351572d8d 100644 --- a/docs/standard/data/xml/result-tree-fragment-in-transformations.md +++ b/docs/standard/data/xml/result-tree-fragment-in-transformations.md @@ -9,19 +9,22 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: df363480-ba02-4233-9ddf-8434e421c4f1 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 1a4b585fe34a841061f8e5bab7cb18a58f53cfe8 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 04e23f39f522fca7f69aa86be7036320a5698a60 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 変換での結果ツリー フラグメントの処理 > [!NOTE] -> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 結果ツリー フラグメントは、ノード セットの特殊な型にすぎません。 ノード フラグメントでは、ノード セットで実行できる任意の関数を実行できます。 `node-set()` 関数を使用して結果ツリー フラグメントをノード セットに変換し、ノード セットを使用できる任意の場所でそれを使用することもできます。 @@ -198,8 +201,8 @@ ms.lasthandoff: 11/21/2017 Book1Book2Book3Book4 ``` -## 関連項目 +## 参照 - [XslTransform クラスによる XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) diff --git a/docs/standard/data/xml/rules-for-inferring-schema-node-types-and-structure.md b/docs/standard/data/xml/rules-for-inferring-schema-node-types-and-structure.md index bf05cfda4bf..c753a3ef067 100644 --- a/docs/standard/data/xml/rules-for-inferring-schema-node-types-and-structure.md +++ b/docs/standard/data/xml/rules-for-inferring-schema-node-types-and-structure.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: d74ce896-717d-4871-8fd9-b070e2f53cb0 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: c28c0f21b03fe7db014f118251363230a6ffc591 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2f4a50fcd3e3ee56ded97edef08c2ee08f4a7233 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # スキーマのノード型および構造を推論するときの規則 このトピックでは、スキーマ推論プロセスで、XML ドキュメント内のノード型を XML スキーマ定義言語 (XSD) 構造に変換する方法を説明します。 @@ -44,12 +47,12 @@ ms.lasthandoff: 11/21/2017 > [!NOTE] > すべての `complexType` 宣言は匿名型として推論されます。 推論されるグローバル要素はルート要素だけであり、その他すべての要素はローカル要素です。 - スキーマ推論プロセスの詳細については、次を参照してください。 [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)です。 + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 ### 単純型要素 メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっている要素は、単純型要素から推論されるスキーマです。 - スキーマ推論プロセスの詳細については、次を参照してください。 [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)です。 + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 |XML|Schema| |---------|------------| @@ -58,7 +61,7 @@ ms.lasthandoff: 11/21/2017 ### 空の要素 メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっている要素は、空要素から推論されるスキーマです。 - スキーマ推論プロセスの詳細については、次を参照してください。 [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)です。 + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 |XML|Schema| |---------|------------| @@ -67,7 +70,7 @@ ms.lasthandoff: 11/21/2017 ### 属性を持つ空要素 メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっている要素は、属性を持つ空要素から推論されるスキーマです。 - スキーマ推論プロセスの詳細については、次を参照してください。 [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)です。 + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 |XML|Schema| |---------|------------| @@ -76,7 +79,7 @@ ms.lasthandoff: 11/21/2017 ### 属性と単純内容を持つ要素 メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっている要素は、属性と単純内容を持つ要素から推論されるスキーマです。 - スキーマ推論プロセスの詳細については、次を参照してください。 [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)です。 + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 |XML|Schema| |---------|------------| @@ -88,7 +91,7 @@ ms.lasthandoff: 11/21/2017 > [!NOTE] > 要素が子要素を 1 つしか持っていない場合でも、子要素はシーケンスとして扱われます。 - スキーマ推論プロセスの詳細については、次を参照してください。 [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)です。 + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 |XML|Schema| |---------|------------| @@ -100,7 +103,7 @@ ms.lasthandoff: 11/21/2017 > [!NOTE] > 要素が子要素を 1 つしか持っていない場合でも、子要素はシーケンスとして扱われます。 - スキーマ推論プロセスの詳細については、次を参照してください。 [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)です。 + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 |XML|Schema| |---------|------------| @@ -112,7 +115,7 @@ ms.lasthandoff: 11/21/2017 > [!NOTE] > `maxOccurs` 要素の `xs:choice` 属性は、推論されるスキーマでは `"unbounded"` に設定されます。 - スキーマ推論プロセスの詳細については、次を参照してください。 [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)です。 + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 |XML|Schema| |---------|------------| @@ -124,7 +127,7 @@ ms.lasthandoff: 11/21/2017 > [!NOTE] > `maxOccurs` 要素の `xs:choice` 属性は、推論されるスキーマでは `"unbounded"` に設定されます。 - スキーマ推論プロセスの詳細については、次を参照してください。 [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)です。 + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 |XML|Schema| |---------|------------| @@ -151,11 +154,11 @@ ms.lasthandoff: 11/21/2017 |ドキュメント型|無視されます。| |名前空間|無視されます。| - スキーマ推論プロセスの詳細については、次を参照してください。 [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)です。 + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 -## 関連項目 +## 参照 [XML スキーマ オブジェクト モデル (SOM)](../../../../docs/standard/data/xml/xml-schema-object-model-som.md) [XML スキーマの推論](../../../../docs/standard/data/xml/inferring-an-xml-schema.md) - [XML ドキュメントからスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md) + [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md) [単純型を推論するときの規則](../../../../docs/standard/data/xml/rules-for-inferring-simple-types.md) diff --git a/docs/standard/data/xml/saving-and-writing-a-document.md b/docs/standard/data/xml/saving-and-writing-a-document.md index 39deac2a80f..9736f75d31a 100644 --- a/docs/standard/data/xml/saving-and-writing-a-document.md +++ b/docs/standard/data/xml/saving-and-writing-a-document.md @@ -12,15 +12,18 @@ dev_langs: - csharp - vb ms.assetid: 097b0cb1-5743-4c3a-86ef-caf5cbe6750d -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: ad656e2db17e44733b5718fe2e3a2a48afcb1381 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2138b9c47c6e41cd94e775eaed005d8a6fd976c9 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # ドキュメントの保存と書き込み を読み込んで保存した場合、保存されたドキュメントは、元のドキュメントとは次のように異なる可能性があります。 @@ -29,7 +32,7 @@ ms.lasthandoff: 10/18/2017 - 属性間のすべての空白は 1 つの空白文字になります。 -- 要素間の空白が変更されます。 有意の空白は保持され、意味のない空白は保持されません。 ドキュメントの保存時に使用されますが、 **インデント**モードが既定では、出力読みやすくするためにします。 +- 要素間の空白が変更されます。 有意の空白は保持され、意味のない空白は保持されません。 しかしながら、ドキュメントの保存時には、出力が読みやすくなるように、既定で の**インデント** モードが使用されます。 - 属性値を囲む引用符は、既定で二重引用符に変更されます。 プロパティを使用すると、引用符を二重引用符または一重引用符のいずれかに設定できます。 @@ -97,5 +100,5 @@ string xml = mydoc.DocumentElement.OuterXml; 一方、子ノードの内容が必要な場合は、 プロパティを使用します。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/schema-validation-using-xpathnavigator.md b/docs/standard/data/xml/schema-validation-using-xpathnavigator.md index 718c7a25efa..790a83b5655 100644 --- a/docs/standard/data/xml/schema-validation-using-xpathnavigator.md +++ b/docs/standard/data/xml/schema-validation-using-xpathnavigator.md @@ -12,15 +12,18 @@ dev_langs: - csharp - vb ms.assetid: 81fa0e41-d9c9-46f0-b22b-50da839c77f5 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 91ad5c2e6f8af7f2c3709b9dff65bd728de08e5b -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d06b82998deba05abe0fca1d4e93cd5c5ea319eb +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XPathNavigator を使用したスキーマ検証 クラスを使用して、 オブジェクトに含まれる XML コンテンツを 2 つの方法で検証することができます。 最初の方法は、検証型 オブジェクトを使用して XML コンテンツを検証する方法で、2 番目の方法は、 クラスの メソッドを使用する方法です。 クラスを使用して XML コンテンツの読み取り専用の検証を行うこともできます。 @@ -357,21 +360,21 @@ class ValidatingReaderExample クラスの メソッドを使用して行われた変更は、新しい値がノードのスキーマ型に照らして無効だったので、 が発生しました。 - 使用して値の変更の詳細については、メソッドを参照してください、 [XPathNavigator を使用して変更の XML データ](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md)トピックです。 + メソッドを使用して値を変更する方法の詳細については、「[XpathNavigator による XML データの変更](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md)」のトピックを参照してください。 ### 読み取り専用の検証 クラスは、XML ドキュメントの読み取り専用のメモリ内表現です。 クラスと クラスは両方とも、XML ドキュメントを編集しナビゲートするために オブジェクトを作成します。 クラスは読み取り専用のクラスなので、 オブジェクトから返された オブジェクトは オブジェクトに含まれる XML ドキュメントを編集できません。 このトピックで前述したように、検証の場合は、検証型 オブジェクトを使用して オブジェクトを作成したのと同様にして、 オブジェクトを作成できます。 オブジェクトは読み込みの際に XML ドキュメントを検証しますが、 オブジェクト内の XML データは編集できないので、XML ドキュメントの再検証はできません。 - 読み取り専用で、編集の詳細については、オブジェクトを参照してください、 [XPathDocument および XmlDocument を使用して XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)トピックです。 + 読み取り専用および編集可能な オブジェクトについては、「[XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)」のトピックを参照してください。 -## 関連項目 +## 参照 [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) - [XPathDocument および XmlDocument を使用して XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md) - [選択、評価、および XPathNavigator を使用して、一致する XML データ](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md) - [XPathNavigator による XML データにアクセスします。](../../../../docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md) + [XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md) + [XPathNavigator を使用した XML データの選択、評価、および照合](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データへのアクセス](../../../../docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md) [XPathNavigator による XML データの編集](../../../../docs/standard/data/xml/editing-xml-data-using-xpathnavigator.md) diff --git a/docs/standard/data/xml/script-blocks-using-msxsl-script.md b/docs/standard/data/xml/script-blocks-using-msxsl-script.md index b909fe0d950..25a1211f237 100644 --- a/docs/standard/data/xml/script-blocks-using-msxsl-script.md +++ b/docs/standard/data/xml/script-blocks-using-msxsl-script.md @@ -12,18 +12,21 @@ dev_langs: - csharp - vb ms.assetid: fde6f43f-c594-486f-abcb-2211197fae20 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 2e127fb02725d11e62c45157b4e45327fc9f1ace -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: badf5511c5638d98d25997f31a3aff8dc11144d6 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # msxsl:script を使用したスクリプト ブロック - クラスは、`msxsl:script` 要素を使用した埋め込みスクリプトをサポートしています。 スタイル シートが読み込まれると、定義されているすべての関数はコード ドキュメント オブジェクト モデル (CodeDOM) によって Microsoft intermediate language (MSIL) にコンパイルされ、実行時に実行されます。 埋め込みのスクリプト ブロックから生成されたアセンブリは、スタイル シートに対して生成されるアセンブリとは区別されます。 + クラスは、`msxsl:script` 要素を使用した埋め込みスクリプトをサポートしています。 スタイル シートが読み込まれると、定義されているすべての関数は Code Document Object Model (CodeDOM) によって Microsoft intermediate language (MSIL) にコンパイルされ、実行時に実行されます。 埋め込みのスクリプト ブロックから生成されたアセンブリは、スタイル シートに対して生成されるアセンブリとは区別されます。 ## XSLT スクリプトの有効化 埋め込みスクリプトのサポートは、 クラスではオプションの XSLT 設定です。 スクリプトのサポートは既定で無効になっています。 スクリプトのサポートを有効にするには、 プロパティを に設定して `true` オブジェクトを作成し、そのオブジェクトを メソッドに渡します。 @@ -68,7 +71,7 @@ ms.lasthandoff: 11/21/2017 |`Result Tree Fragment`|| |`Node Set`|| - CLR 数値型は に変換されます。 型は に変換されます。 型は に変換されます。 **Xpathnavigator[]**に変換されますです。 + CLR 数値型は に変換されます。 型は に変換されます。 型は に変換されます。 **XPathNavigator[]** は に変換されます。 その他の型はエラーになります。 @@ -155,6 +158,6 @@ ms.lasthandoff: 11/21/2017 ``` -## 関連項目 +## 参照 [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) [動的なソース コードの生成とコンパイル](../../../../docs/framework/reflection-and-codedom/dynamic-source-code-generation-and-compilation.md) diff --git a/docs/standard/data/xml/support-for-the-msxsl-node-set-function.md b/docs/standard/data/xml/support-for-the-msxsl-node-set-function.md index ee762e2d485..6dcce527dff 100644 --- a/docs/standard/data/xml/support-for-the-msxsl-node-set-function.md +++ b/docs/standard/data/xml/support-for-the-msxsl-node-set-function.md @@ -9,21 +9,24 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: d0cbf517-d9f6-4097-9851-4fa62903decd -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: a3dcb45e6aeecb9e54ad48db4130689ac0fdd358 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 7cd79acbdef09acb0a05c818d8358cd612c3bcdf +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # msxsl:node-set() 関数のサポート `msxsl:node-set` 関数を使用すると、結果ツリー フラグメントをノード セットに変換できます。 結果として得られるノード セットには、常に単一のノードが含まれています。また、このノード セットは、常にそのツリーのルート ノードです。 > [!NOTE] -> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 `msxsl:node-set` 関数を使用すると、結果ツリー フラグメントをノード セットに変換できます。 結果として得られるノード セットには、常に単一のノードが含まれています。また、このノード セットは、常にそのツリーのルート ノードです。 @@ -60,5 +63,5 @@ ms.lasthandoff: 10/18/2017 Michael HowardMichael Kay ``` -## 関連項目 - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) diff --git a/docs/standard/data/xml/traversing-xml-schemas.md b/docs/standard/data/xml/traversing-xml-schemas.md index 7d8d26950c3..bc44c3effab 100644 --- a/docs/standard/data/xml/traversing-xml-schemas.md +++ b/docs/standard/data/xml/traversing-xml-schemas.md @@ -13,15 +13,18 @@ dev_langs: - vb - cpp ms.assetid: cce69574-5861-4a30-b730-2e18d915d8ee -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: cc1883e8503567bdf2f6e0bda20cea777a12c7cf -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: ceca36b5e988751dff34b5574978aa0ae2da1259 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XML スキーマの走査 スキーマ オブジェクト モデル (SOM) API を使用して XML スキーマを走査すると、SOM に格納されている要素、属性、および型にアクセスできます。 また、SOM API を使用して XML スキーマを編集する際には、最初に SOM に読み込まれた XML スキーマを走査します。 @@ -46,7 +49,7 @@ ms.lasthandoff: 11/21/2017 > > プロパティを使用すると、スキーマの名前空間に属さないすべての属性にアクセスできます。 これらの属性はスキーマ プロセッサで処理されません。 - 次のコード例で作成したカスタム スキーマを走査することを示しています、 [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)トピックです。 このコード サンプルは、上記のコレクションを使用してスキーマを走査し、スキーマのすべての要素と属性をコンソールに出力する例を示します。 + 以下のコード サンプルでは、「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」トピックで作成されたカスタム スキーマの走査の例を示します。 このコード サンプルは、上記のコレクションを使用してスキーマを走査し、スキーマのすべての要素と属性をコンソールに出力する例を示します。 このサンプルでは、次の手順でカスタム スキーマの走査を行います。 @@ -72,13 +75,13 @@ ms.lasthandoff: 11/21/2017 プロパティには、 (ユーザー定義の単純型または複合型の場合は ) を使用できます。 また、W3C 勧告『XML Schema』で定義されている組み込みデータ型の場合には、 を使用することもできます。 カスタム スキーマの場合、 要素の `Customer` は で、`FirstName` 要素および `LastName` 要素は です。 - コード例で、 [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)使用トピック、属性を追加するコレクション`CustomerId`を`Customer`要素。 これは、スキーマのコンパイル前のプロパティです。 対応するスキーマのコンパイル後の情報セット プロパティは、 コレクションで、複合型のすべての属性 (型の派生を通じて継承される属性を含む) を持っています。 + 「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」のコード サンプルでは、 コレクションを使用して、`Customer` 要素に属性 `CustomerId` を追加しました。 これは、スキーマのコンパイル前のプロパティです。 対応するスキーマのコンパイル後の情報セット プロパティは、 コレクションで、複合型のすべての属性 (型の派生を通じて継承される属性を含む) を持っています。 -## 関連項目 +## 参照 [XML スキーマ オブジェクト モデルの概要](../../../../docs/standard/data/xml/xml-schema-object-model-overview.md) [XML スキーマの読み取りと書き込み](../../../../docs/standard/data/xml/reading-and-writing-xml-schemas.md) [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md) [XML スキーマの編集](../../../../docs/standard/data/xml/editing-xml-schemas.md) - [インクルードまたは XML スキーマのインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) - [スキーマのコンパイルのための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) - [スキーマ コンパイル後の Infoset](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) + [XML スキーマのインクルードまたはインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマのコンパイル後の情報セット](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) diff --git a/docs/standard/data/xml/type-support-in-the-system-xml-classes.md b/docs/standard/data/xml/type-support-in-the-system-xml-classes.md index 69965920b99..7281da516c8 100644 --- a/docs/standard/data/xml/type-support-in-the-system-xml-classes.md +++ b/docs/standard/data/xml/type-support-in-the-system-xml-classes.md @@ -9,41 +9,44 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 63570538-06e3-4401-ad4d-ac50be90c7bf -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 14821ef78f20d1ff303afacb42415e4017a92742 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 38aa6462fc7a0a1eb80c767777da4f2343983296 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # System.Xml クラスでの型のサポート .NET Framework Version 2.0 では、コアの XML クラスが強化され、型サポート機能が追加されています。 、および クラスには、XML スキーマ型と共通言語ランタイム (CLR) 型の間の変換機能を含む型サポート機能が含まれています。 .NET Framework Version 2.0 では、、および クラスが強化され、型サポート機能が追加されています。 -- 各クラスに含まれる、 **SchemaInfo**ノードでスキーマ情報を返します。 +- および クラスにはそれぞれ、ノードのスキーマ情報を返す **SchemaInfo** プロパティが含まれています。 -- **ReadContentAs**と**ReadElementContentAs**とメソッドをクラスは、テキスト値を読み取るし、1 つのメソッドの呼び出しでの CLR 値に変換します。 +- クラスの **ReadContentAs** と **ReadElementContentAs** メソッドは、1 回のメソッド呼び出しでテキスト値を読み取り、それを CLR 値に変換します。 - クラスの メソッドは、XML の書き出し時に、CLR 型を XML スキーマ型に変換します。 -- **ValueAs**とプロパティをクラスは、ノードの値を返すし、1 つのメソッドの呼び出しでの CLR 値に変換します。 +- クラスの **ValueAs** および プロパティは、1 回のメソッド呼び出しでノード値を返し、それを CLR 値に変換します。 > [!NOTE] > .NET Framework Version 1.0 では、XML スキーマ型と CLR 型の間の変換に クラスが必要でした。 ## このセクションの内容 - [CLR 型に XML データ型のマッピング](../../../../docs/standard/data/xml/mapping-xml-data-types-to-clr-types.md) + [XML データ型から CLR 型へのマッピング](../../../../docs/standard/data/xml/mapping-xml-data-types-to-clr-types.md) XML データ型から CLR 型への既定のマッピングについて説明します。 - [XML 型サポート実装に関するメモ](../../../../docs/standard/data/xml/xml-type-support-implementation-notes.md) + [XML 型サポートの実装に関するメモ](../../../../docs/standard/data/xml/xml-type-support-implementation-notes.md) 型サポート実装の詳細のいくつかについて説明します。 [XML データ型の変換](../../../../docs/standard/data/xml/conversion-of-xml-data-types.md) XML スキーマ型と CLR 型の間の変換に クラスを使用する方法について説明します。 ## 関連項目 - [XPathNavigator による XML データに型指定された厳密にアクセスします。](../../../../docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md) + [厳密に型指定された XML データへの XPathNavigator を使用したアクセス](../../../../docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md) diff --git a/docs/standard/data/xml/types-of-xml-nodes.md b/docs/standard/data/xml/types-of-xml-nodes.md index 43c79ce8a87..e401303490d 100644 --- a/docs/standard/data/xml/types-of-xml-nodes.md +++ b/docs/standard/data/xml/types-of-xml-nodes.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 71d03b78-6898-4ce7-b0fc-1282573f31f7 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 3914a2c5c06a2cc73f14bc473984094b474d537e -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 0fd196f4aed5d4faa3e703f639b927f001b50174 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XML ノードの種類 XML ドキュメントがノードのツリーとしてメモリに読み込まれると、ノードの作成時にノード型が決まります。 XML ドキュメント オブジェクト モデル (DOM) では複数のノード型が定義されています。これらのノード型は W3C (World Wide Web Consortium) で規定されているもので、セクション 1.1.1「The DOM Structure Model」に記載されています。 ノード型、ノード型に割り当てられるオブジェクト、およびそれぞれの簡単な説明を次の表に示します。 @@ -37,21 +40,21 @@ XML ドキュメントがノードのツリーとしてメモリに読み込ま |エンティティ||内部ドキュメント型定義 (DTD) のサブセットまたは外部 DTD とパラメーター エンティティから取得され、XML ドキュメントに含まれている `` 宣言を表します。| |Notation||DTD で宣言された記法を表します。| - 属性 (*attr*) が表示されている、W3C DOM Level 1 セクション 1.2 基本的なインターフェイスをノードとしてと任意の要素ノードの子は見なされません。 + 属性 (*attr*) は、W3C DOM Level 1 のセクション 1.2「Fundamental Interfaces」ではノードとして記載されていますが、どの要素ノードの子とも見なされません。 - ただしとして Microsoft .NET Framework のオブジェクト モデルで使用可能な次の表は、W3C で定義されていないその他のノード型**XmlNodeType**列挙体です。 そのため、これらのノード型に対応する DOM ノード型の列はありません。 + W3C では定義されていない追加のノード型を次の表に示します。ただし、これらのノード型は **XmlNodeType** 列挙値としてのみ Microsoft .NET Framework オブジェクト モデルで使用できます。 そのため、これらのノード型に対応する DOM ノード型の列はありません。 |ノード型|説明| |---------------|-----------------| ||宣言ノード `` を表します。| ||有意の空白を表します。これは混合コンテンツの空白です。| ||要素コンテンツ内の空白を表します。| -|EndElement|ときに返される**XmlReader**要素の終わりを取得します。

XML の例: **\<項目/>**

詳細については、「」を参照してください。| -|EndEntity|ときに返される**XmlReader**はエンティティの置換への呼び出しの結果として最後に取得です。 詳細については、「」を参照してください。| +|EndElement|**XmlReader** が要素の末尾に達したときに返されます。

XML サンプル: **\**

詳細については、「」を参照してください。| +|EndEntity| を呼び出した後、置換するエンティティの末尾に **XmlReader** が達したときに返されます。 詳細については、「」を参照してください。| - XML では読み取り、ノードとその内容に関する情報を印刷するノードの種類の case の構文を使用しているコード例を表示するを参照してください。です。 + XML を読み込み、case 構成体を使用してノード型を判定し、ノードとその内容についての情報を出力するコード サンプルについては、「」を参照してください。 - ノードの種類とその対応するオブジェクト名のオブジェクト階層の詳細については、次を参照してください。 [XML ドキュメント オブジェクト モデル (DOM) の階層](../../../../docs/standard/data/xml/xml-document-object-model-dom-hierarchy.md)です。 ノード ツリーに作成されたオブジェクトの詳細については、次を参照してください。[オブジェクト階層の XML データへのマップ](../../../../docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md)です。 + ノード型のオブジェクト階層構造とそれぞれに対応するオブジェクト名の詳細については、「[XML ドキュメント オブジェクト モデル (DOM) の階層構造](../../../../docs/standard/data/xml/xml-document-object-model-dom-hierarchy.md)」を参照してください。 ノード ツリーに作成されるオブジェクトの詳細については、「[オブジェクト階層の XML データへのマップ](../../../../docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md)」を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/using-the-xslcompiledtransform-class.md b/docs/standard/data/xml/using-the-xslcompiledtransform-class.md index bcf82452b13..5627e0fff03 100644 --- a/docs/standard/data/xml/using-the-xslcompiledtransform-class.md +++ b/docs/standard/data/xml/using-the-xslcompiledtransform-class.md @@ -9,21 +9,24 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: f9b074f6-d6f4-49dd-a093-df510bf0cf7b -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 5a5c71a7796790343bf39de5bbfd03997c25d5f0 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a00ae5a2f54aee3d6ac16d0870f9171fe42ca289 +ms.sourcegitcommit: 91691981897cf8451033cb01071d8f5d94017f97 ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/09/2018 --- # XslCompiledTransform クラスの使用 クラスは Microsoft .NET Framework XSLT プロセッサです。 このクラスは、スタイル シートをコンパイルし、XSLT 変換を実行するために使用されます。 > [!NOTE] -> 全体的なパフォーマンスは クラスの方が クラスより優れていますが、 クラスの メソッドが変換で初めて呼び出されたときは、 クラスの メソッドよりパフォーマンスが劣る場合があります。 これは、XSLT ファイルを読み込む前にコンパイルする必要があるためです。 詳細については、次のブログの投稿を参照してください: [XslCompiledTransform は XslTransform より遅いですか?](http://go.microsoft.com/fwlink/?LinkId=130590) +> 全体的なパフォーマンスは クラスの方が クラスより優れていますが、 クラスの メソッドが変換で初めて呼び出されたときは、 クラスの メソッドよりパフォーマンスが劣る場合があります。 これは、XSLT ファイルを読み込む前にコンパイルする必要があるためです。 詳しくは、ブログの投稿「[XslCompiledTransform Slower than XslTransform?](https://blogs.msdn.microsoft.com/antosha/2006/07/16/xslcompiledtransform-slower-than-xsltransform/)」(XslCompiledTransform は XslTransform より遅い?) をご覧ください。 ## このセクションの内容 [XslCompiledTransform クラスへの入力](../../../../docs/standard/data/xml/inputs-to-the-xslcompiledtransform-class.md) @@ -32,21 +35,21 @@ ms.lasthandoff: 11/21/2017 [XslCompiledTransform クラスの出力オプション](../../../../docs/standard/data/xml/output-options-on-the-xslcompiledtransform-class.md) 使用可能な XSLT 出力オプションについて説明します。 - [XSLT 処理中に外部のリソースの解決](../../../../docs/standard/data/xml/resolving-external-resources-during-xslt-processing.md) + [XSLT 処理中の外部リソースの解決](../../../../docs/standard/data/xml/resolving-external-resources-during-xslt-processing.md) 外部リソースを解決するための クラスの使用について説明します。 - [XSLT スタイル シートを拡張します。](../../../../docs/standard/data/xml/extending-xslt-style-sheets.md) + [XSLT スタイル シートの拡張](../../../../docs/standard/data/xml/extending-xslt-style-sheets.md) XSLT の拡張機能のサポートについて説明します。 ||| |-|-| |[XSLT エラーの解決](../../../../docs/standard/data/xml/recoverable-xslt-errors.md)|W3C (World Wide Web Consortium) 勧告『XSLT 1.0』で許可されている随意動作を示し、 クラスによるこれらの動作の処理方法を説明します。| -|[方法: ノード フラグメントを変換](../../../../docs/standard/data/xml/how-to-transform-a-node-fragment.md)|ノード フラグメントの変換方法を説明します。| +|[方法 : ノード フラグメントを変換する](../../../../docs/standard/data/xml/how-to-transform-a-node-fragment.md)|ノード フラグメントの変換方法を説明します。| ## 関連項目 [XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md) クラスからコードを移行する方法について説明します。 -## 関連項目 +## 参照 diff --git a/docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md b/docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md index 7fc4ed78358..6c3062ee0f7 100644 --- a/docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md +++ b/docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md @@ -9,20 +9,23 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 1b141a0a-50d8-4ebd-83cd-a84449bb22b2 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 82401a18132801f9aa5368832b96be3cb67a8642 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 8a16f90b6d48bc2ffabfd678722fa9b6e61328cd +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # DOM を読み込むときの空白および有意の空白の処理 -ドキュメントを読み込む場合は、空白を保持し、作成するオプションを設定できます**XmlWhitespace**ドキュメント ツリーにおいてノード。 空白のノードを作成するには、設定、 **PreserveWhitespace**プロパティを true にします。 プロパティ設定されている場合**false**が既定値である空白ノードは作成されません。 有意の空白ノードは常に保持、および**XmlSignificantWhitespace**ノードは常にメモリの設定に関係なく、このデータを表すために作成、 **PreserveWhitespace**フラグです。 +ドキュメントを読み込むときには、空白を保持するオプションを設定して、ドキュメント ツリーに **XmlWhitespace** ノードを作成できます。 空白ノードを作成するには、**PreserveWhitespace** プロパティを true に設定します。 このプロパティが既定の **false** に設定されている場合、空白ノードは作成されません。 **PreserveWhitespace** フラグの設定に関係なく、有意の空白ノードは常に保持され、そのデータを表す **XmlSignificantWhitespace** ノードが常にメモリ内に作成されます。 - ドキュメントがリーダーから読み込まれている場合、設定、 **PreserveWhitespace**フラグ プロパティ、 **XmlDocument**クラスの作成に影響**XmlWhitespace**ノード場合にのみ、 **WhitespaceHandling**プロパティを**XmlTextReader**に設定されていない**WhitespaceHandling.None**です。 値では、 **WhitespaceHandling**プロパティでそのフラグの設定よりも優先するリーダーを**XmlDocument**です。 詳細については**XmlSignificantWhitespace**を参照してくださいです。 + ドキュメントがリーダーから読み込まれた場合は、**XmlTextReader** の **WhitespaceHandling** プロパティが **WhitespaceHandling.None** に設定されていない場合にのみ、**XmlDocument** クラスの **PreserveWhitespace** フラグ プロパティの設定が **XmlWhitespace** ノードの作成に影響を及ぼします。 リーダーの **WhitespaceHandling** プロパティの値の方が **XmlDocument** のこのフラグの設定より優先されます。 **XmlSignificantWhitespace** の詳細については、「」を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/working-with-xml-schemas.md b/docs/standard/data/xml/working-with-xml-schemas.md index 3e27e7f2cf5..f5496baa4c3 100644 --- a/docs/standard/data/xml/working-with-xml-schemas.md +++ b/docs/standard/data/xml/working-with-xml-schemas.md @@ -9,26 +9,29 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: bbbcc70c-bf9a-4f6a-af72-1bab5384a187 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: e21d402dce02ecb332d041f0cda651df911979ca -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 1cfac14f934efb22f7cd39faceb232cc819b540e +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XML スキーマの使用 XML ドキュメントの構造、その要素間のリレーションシップ、データ型、および内容の制約を定義するには、ドキュメント型定義 (DTD: Document Type Definition) または XML スキーマ定義言語 (XSD) スキーマを使用します。 XML ドキュメントは、W3C (World Wide Web Consortium) 勧告『Extensible Markup Language (XML) 1.0』で定義されている構文要件をすべて満たしている場合には整形式と見なされますが、整形式であると同時に DTD またはスキーマに定義されている制約に準拠していなければ有効とは見なされません。 したがって、有効な XML ドキュメントはすべて整形式ですが、整形式の XML ドキュメントがすべて有効であるとは限りません。 - XML の詳細については、次を参照してください。、 [w3c 勧告 『 XML 1.0 』](http://go.microsoft.com/fwlink/?linkid=7269)です。 XML スキーマの詳細については、次を参照してください。、 [W3C XML Schema Part 1: Structures](http://go.microsoft.com/fwlink/?linkid=48881)と[W3C XML Schema Part 2: Datatypes recommendation 』](http://go.microsoft.com/fwlink/?linkid=17392)の推奨事項です。 + XML の詳細については、[W3C 勧告『XML 1.0』](http://go.microsoft.com/fwlink/?linkid=7269)を参照してください。 XML スキーマの詳細については、[W3C 勧告『XML Schema Part 1: Structures』](http://go.microsoft.com/fwlink/?linkid=48881)および[『XML Schema Part 2: Datatypes』](http://go.microsoft.com/fwlink/?linkid=17392)を参照してください。 ## このセクションの内容 [XML スキーマ オブジェクト モデル (SOM)](../../../../docs/standard/data/xml/xml-schema-object-model-som.md) 名前空間のスキーマ オブジェクト モデル (SOM) について説明します。SOM は、ファイルからスキーマ定義言語 (XSD) スキーマを読み取ったり、プログラムを使用してメモリ内にスキーマを作成したりできる一連のクラスを提供します。 - [スキーマのコンパイルのための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) クラスについて説明します。このクラスは、XSD スキーマを格納または検証できるキャッシュです。 [XmlSchemaValidator のプッシュ ベースの検証](../../../../docs/standard/data/xml/xmlschemavalidator-push-based-validation.md) @@ -44,5 +47,5 @@ XML ドキュメントの構造、その要素間のリレーションシップ [DOM における XML ドキュメントの検証](../../../../docs/standard/data/xml/validating-an-xml-document-in-the-dom.md) ドキュメント オブジェクト モデル (DOM) の XML を検証する方法を説明します。 検証できる XML は、DOM に読み込まれている XML か、または事前に検証されていない DOM の XML ドキュメントです。 - [XPathNavigator を使用するスキーマの検証](../../../../docs/standard/data/xml/schema-validation-using-xpathnavigator.md) + [XPathNavigator を使用したスキーマ検証](../../../../docs/standard/data/xml/schema-validation-using-xpathnavigator.md) クラスを使用して操作中および編集中の XML を検証する方法を説明します。 diff --git a/docs/standard/data/xml/xdr-validation-with-xmlschemacollection.md b/docs/standard/data/xml/xdr-validation-with-xmlschemacollection.md index 3013a973e26..d85426bc727 100644 --- a/docs/standard/data/xml/xdr-validation-with-xmlschemacollection.md +++ b/docs/standard/data/xml/xdr-validation-with-xmlschemacollection.md @@ -12,29 +12,32 @@ dev_langs: - csharp - vb ms.assetid: 00833027-1428-4586-83c1-42f5de3323d1 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: fab67e10aa0562b59f8c7704a5ca1feeb66d6208 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f875169d43a2f733050b46c76cea0891b4cfabf7 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XmlSchemaCollection を使用した XDR 検証 -に対して検証するときは、Xml-data Reduced (XDR) スキーマが格納されている場合、 **XmlSchemaCollection**URI では、スキーマがコレクションに追加したときに指定された名前空間に関連付けられています。 **XmlValidatingReader** XML ドキュメント内の名前空間 URI をコレクション内の URI に対応するスキーマにマップします。 +検証の基準とする XDR (XML-Data Reduced) スキーマが **XmlSchemaCollection** に格納されている場合、そのスキーマは、XmlSchemaCollection に追加したときに指定された名前空間 URI に関連付けられています。 **XmlValidatingReader** は、XML ドキュメント内の名前空間 URI を、コレクション内のその URI に対応するスキーマに割り当てます。 > [!IMPORTANT] -> クラスは廃止されており、 クラスに置き換えられています。 詳細については、クラス」を参照して[スキーマのコンパイルのための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md)です。 +> クラスは廃止されており、 クラスに置き換えられています。 クラスの詳細については、「[スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md)」を参照してください。 - たとえば、XML ドキュメントのルート要素が``にスキーマを追加すると、 **XmlSchemaCollection**次のように、同じ名前空間を参照しています。 + たとえば、XML ドキュメントのルート要素が `` の場合、スキーマを **XmlSchemaCollection** に追加するときに、そのスキーマも、次に示すように同じ名前空間を参照します。 ``` xsc.Add("urn:newbooks-schema", "newbooks.xdr") ``` - 次のコード例を作成、 **XmlValidatingReader**を受け取る、 **XmlTextReader** XDR スキーマ HeadCount.xdr に追加し、 **XmlSchemaCollection**です。 + **XmlTextReader** を受け取り、XDR スキーマ HeadCount.xdr を **XmlSchemaCollection** に追加する **XmlValidatingReader** を作成するコード サンプルを次に示します。 ```vb Imports System @@ -164,7 +167,7 @@ namespace ValidationSample ``` -## 関連項目 +## 参照 `System.Xml.XmlValidatingReader.Settings` [XmlSchemaCollection スキーマのコンパイル](../../../../docs/standard/data/xml/xmlschemacollection-schema-compilation.md) diff --git a/docs/standard/data/xml/xml-document-creation.md b/docs/standard/data/xml/xml-document-creation.md index 0f86f2d25f8..7b4cfcecf5e 100644 --- a/docs/standard/data/xml/xml-document-creation.md +++ b/docs/standard/data/xml/xml-document-creation.md @@ -12,18 +12,21 @@ dev_langs: - csharp - vb ms.assetid: 877e9c62-b082-4bfb-bc5b-f47297eb30ef -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 5a0806e34cfbf7c8e0b5ba995ca4876b8d10405e -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: ea67841e44d8d88d2effec92eb1668142c1510f2 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XML ドキュメントの作成 -XML ドキュメントは、2 とおりの方法で作成できます。 作成する方法の 1 つは、 **XmlDocument**パラメーターなしでします。 その他の方法は、作成する、 **XmlDocument**を XmlNameTable をパラメーターとして渡します。 次の例は、新しい、空を作成する方法を示しています。 **XmlDocument**パラメーターを使用します。 +XML ドキュメントは、2 とおりの方法で作成できます。 1 つは、パラメーターを使用せずに **XmlDocument** を作成する方法です。 もう 1 つは、**XmlDocument** の作成時に XmlNameTable をパラメーターとして渡す方法です。 パラメーターを使用せず、新しい空の **XmlDocument** を作成する方法を次の例に示します。 ```vb Dim doc As New XmlDocument() @@ -33,9 +36,9 @@ Dim doc As New XmlDocument() XmlDocument doc = new XmlDocument(); ``` - ドキュメントを作成した後は、文字列からのデータを読み込むことができますストリーム、URL、テキスト リーダー、または**XmlReader**派生したクラスを使用して、**読み込む**メソッドです。 別のロード メソッドも、 **LoadXML**メソッドで、文字列から XML を読み取ります。 詳細については、さまざまな**ロード**メソッドを参照してください[DOM に XML ドキュメントを読み取る](../../../../docs/standard/data/xml/reading-an-xml-document-into-the-dom.md)です。 + ドキュメントを作成すると、**Load** メソッドを使用することにより、文字列、ストリーム、URL、テキスト リーダー、または **XmlReader** から派生したクラスのデータを読み込むことができます。 文字列から XML を読み込む **LoadXML** メソッドという読み込みメソッドもあります。 各種の **Load** メソッドの詳細については、「[XML ドキュメントの DOM への読み込み](../../../../docs/standard/data/xml/reading-an-xml-document-into-the-dom.md)」を参照してください。 - 呼ばれるクラスがある、 **XmlNameTable**です。 このクラスは、分解された文字列オブジェクトのテーブルです。 このテーブルを使用すると、パーサーは XML ドキュメント内で繰り返されているすべての要素名と属性名に同じ文字列オブジェクトを使用でき、効率が向上します。 **XmlNameTable**ドキュメントが上記のように作成され、ドキュメントが読み込まれるときに、属性と要素の名前に読み込まれるときに自動的に作成します。 使用して新しいドキュメントを作成するには、ネーム テーブルを持つドキュメントが既にある場合、それらの名前が別のドキュメントで役に立つ、**ロード**を受け取るメソッド、 **XmlNameTable**をパラメーターとして。 既存の機能を使用してこのメソッドを使用して、ドキュメントが作成されると、 **XmlNameTable**のすべての属性と既に読み込まれます。 その他のドキュメントから要素。 XmlNameTable を使用すると、要素名と属性名を効率的に比較できます。 詳細については、 **XmlNameTable**を参照してください[比較 XmlNameTable によるオブジェクトの](../../../../docs/standard/data/xml/object-comparison-using-xmlnametable.md)します。 リファレンスについては、次を参照してください。です。 + **XmlNameTable** というクラスがあります。 このクラスは、分解された文字列オブジェクトのテーブルです。 このテーブルを使用すると、パーサーは XML ドキュメント内で繰り返されているすべての要素名と属性名に同じ文字列オブジェクトを使用でき、効率が向上します。 **XmlNameTable** は、前述のようにドキュメントの作成時に自動的に作成され、ドキュメントの読み込み時に属性名および要素名と共に読み込まれます。 名前テーブルのあるドキュメントが既に存在し、それらの名前が別のドキュメントで役に立つ場合は、**XmlNameTable** をパラメーターとしてとる **Load** メソッドを使用して新しいドキュメントを作成できます。 このメソッドによるドキュメントの作成時には、別のドキュメントからの既存の **XmlNameTable** と、既に読み込まれているすべての属性および要素が使われます。 XmlNameTable を使用すると、要素名と属性名を効率的に比較できます。 **XmlNameTable** の詳細については、「[XmlNameTable によるオブジェクトの比較](../../../../docs/standard/data/xml/object-comparison-using-xmlnametable.md)」を参照してください。 を参照してください。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/xml-document-object-model-dom-hierarchy.md b/docs/standard/data/xml/xml-document-object-model-dom-hierarchy.md index b9dca954f53..a530150f028 100644 --- a/docs/standard/data/xml/xml-document-object-model-dom-hierarchy.md +++ b/docs/standard/data/xml/xml-document-object-model-dom-hierarchy.md @@ -9,23 +9,26 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 9d187d4f-c76e-4223-a670-cc290783ce47 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 6dec61860fba5815b1dae802d280e8df6628ab91 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4d2ffaa994ce3c9b02ed0937967845be1b803f6d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XML ドキュメント オブジェクト モデル (DOM) の階層構造 XML ドキュメント オブジェクト モデル (DOM) のクラスの階層構造を次の図に示します。クラス名に続くかっこ内の名前は、W3C (World Wide Web Consortium) 名です。 - ![XML ドキュメント オブジェクト モデル (DOM)階層](../../../../docs/standard/data/xml/media/dom-class-hierarchy.gif "Dom_class_hierarchy") + ![XML ドキュメント オブジェクト モデル (DOM) の階層構造](../../../../docs/standard/data/xml/media/dom-class-hierarchy.gif "Dom_class_hierarchy") XML ドキュメント オブジェクト モデル (DOM) の階層構造 - 次のクラスを継承しない、 **XmlNode**: + 次のクラスは **XmlNode** から継承したものではありません。 - **XmlImplementation** @@ -35,15 +38,15 @@ XML ドキュメント オブジェクト モデル (DOM) の階層構造 - **XmlNodeChangedEventArgs** - **XmlImplementation**クラスは XML ドキュメントの作成に使用します。 詳細については、次を参照してください。 [XML ドキュメントの作成](../../../../docs/standard/data/xml/xml-document-creation.md)です。 + **XmlImplementation** クラスは、XML ドキュメントを作成するために使われます。 詳細については、「[XML ドキュメントの作成](../../../../docs/standard/data/xml/xml-document-creation.md)」を参照してください。 - **XmlNamedNodeMap**クラスは、順序付けられていないノードのセットを処理します。 詳細については、次を参照してください。[名前またはインデックスによる順序付けられていないノードの取得](../../../../docs/standard/data/xml/unordered-node-retrieval-by-name-or-index.md)です。 + **XmlNamedNodeMap** クラスは、順序付けられていないノード セットを処理します。 詳細については、「[名前またはインデックスによる順序付けられていないノードの取得](../../../../docs/standard/data/xml/unordered-node-retrieval-by-name-or-index.md)」を参照してください。 - **XmlNodeList**クラスは、ノードの順序付きリストを処理します。 詳細については、次を参照してください。[インデックスによる順序付けられたノードの取得](../../../../docs/standard/data/xml/ordered-node-retrieval-by-index.md)です。 + **XmlNodeList** クラスは、順序付けられたノード リストを処理します。 詳細については、「[インデックスによる順序付けられたノードの取得](../../../../docs/standard/data/xml/ordered-node-retrieval-by-index.md)」を参照してください。 - **XmlNodeChangedEventArgs**クラスに登録されたイベント ハンドラーの処理、 **XmlDocument**です。 詳細については、次を参照してください。 [XmlNodeChangedEventArgs による XML ドキュメントでのイベント処理](../../../../docs/standard/data/xml/event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md)です。 + **XmlNodeChangedEventArgs** クラスは、**XmlDocument** に登録されたイベント ハンドラーを処理します。 詳細については、「[XmlNodeChangedEventArgs による XML ドキュメントのイベント処理](../../../../docs/standard/data/xml/event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md)」を参照してください。 - **XmlLinkedNode**クラスから継承**XmlNode**です。 その目的は、2 つのメソッドをオーバーライドする**XmlNode**: **PreviousSibling**と**NextSibling**メソッドです。 これらのオーバーライドされたメソッドは、によって継承および使用**XmlCharacterData**、 **XmlDeclaration**、 **XmlDocumentType**、 **XmlElement**、 **XmlEntityReference**、および**XmlProcessingInstruction**、これらは前または次の兄弟を持つクラス。 + **XmlLinkedNode** クラスは **XmlNode** から継承しています。 その目的は、**XmlNode** の **PreviousSibling** と **NextSibling** という 2 つのメソッドをオーバーライドすることです。 これらのオーバーライドされたメソッドは、前後に兄弟を持つ **XmlCharacterData**、**XmlDeclaration**、**XmlDocumentType**、**XmlElement**、**XmlEntityReference**、**XmlProcessingInstruction** クラスによって継承され、使用されます。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/xml-document-object-model-dom.md b/docs/standard/data/xml/xml-document-object-model-dom.md index 0f9aa46613f..c3c7629e9a3 100644 --- a/docs/standard/data/xml/xml-document-object-model-dom.md +++ b/docs/standard/data/xml/xml-document-object-model-dom.md @@ -9,18 +9,21 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: b5e52844-4820-47c0-a61d-de2da33e9f54 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: ff91e929876ceec8512e962b88795b6a8a29f3d0 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: af9473af6a315feb6b1f0a741525cbf42dd32d1d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XML ドキュメント オブジェクト モデル (DOM) -XML ドキュメント オブジェクト モデル (DOM) クラスは、XML ドキュメントのメモリ内表現です。 DOM を使用すると、XML ドキュメントの読み込み、操作、および変更をプログラムから実行できます。 **XmlReader**クラスも XML を読み取ります。 ただし、非キャッシュ、順方向専用、読み取り専用アクセスを提供します。 つまり、属性の値または要素、または挿入し、使用してノードを削除する機能の内容を編集する機能がないこと、 **XmlReader**です。 DOM の主な機能は編集です。 XML データは、通常、メモリ上では構造的に表現されますが、実際の XML データをファイルに保存したり、別のオブジェクトから取り込む場合は、直線的な形式で格納されます。 XML データの例を次に示します。 +XML ドキュメント オブジェクト モデル (DOM) クラスは、XML ドキュメントのメモリ内表現です。 DOM を使用すると、XML ドキュメントの読み込み、操作、および変更をプログラムから実行できます。 **XmlReader** クラスも XML を読み込めますが、非キャッシュ、前方参照専用、読み取り専用のアクセスしか実行できません。 つまり、**XmlReader** には、属性の値または要素のコンテンツを編集する機能や、ノードを挿入したり削除したりする機能はありません。 DOM の主な機能は編集です。 XML データは、通常、メモリ上では構造的に表現されますが、実際の XML データをファイルに保存したり、別のオブジェクトから取り込む場合は、直線的な形式で格納されます。 XML データの例を次に示します。 ## 入力 @@ -44,45 +47,45 @@ XML ドキュメント オブジェクト モデル (DOM) クラスは、XML ド ![XML ドキュメントの構造](../../../../docs/standard/data/xml/media/xml-to-domtree.gif "XML_To_DOMTree") XML ドキュメントの構造 - この図では、各円と呼ばれるノードを表す XML ドキュメントの構造内で、 **XmlNode**オブジェクト。 **XmlNode**オブジェクトが、DOM ツリーの基本オブジェクト。 **XmlDocument**を拡張するクラス**XmlNode**が全体として (たとえばをメモリに読み込むか、XML をファイルに保存ドキュメントに対する操作を実行するためのメソッドをサポートしています。 さらに、 **XmlDocument**を表示して、XML ドキュメント全体のノードを操作する手段を提供します。 両方**XmlNode**と**XmlDocument**パフォーマンスと使いやすさの拡張機能がありするメソッドとプロパティ。 + 図中のそれぞれの円は、XML ドキュメント構造における 1 つのノードを表します。これは **XmlNode** オブジェクトと呼ばれます。 **XmlNode** オブジェクトは、DOM ツリーの基本オブジェクトです。 **XmlNode** を拡張する **XmlDocument** クラスは、たとえばドキュメントをメモリに読み込んだり、XML をファイルに保存するなど、ドキュメント全体を操作するメソッドをサポートしています。 さらに **XmlDocument** では、XML ドキュメント全体のノードを参照して操作する手段も提供されます。 **XmlNode** と **XmlDocument** は、いずれもパフォーマンスと使いやすさが向上しており、次の操作を実行するメソッドとプロパティを持っています。 - 要素ノード、エンティティ参照ノードなど、DOM に固有のノードへのアクセスと変更。 - 要素ノードのテキストなど、ノードに格納されている情報およびノード全体の取得。 > [!NOTE] - > 構造体、または編集、DOM によって提供される機能がアプリケーションに必要としない場合、 **XmlReader**と**XmlWriter**クラスは、XML を非キャッシュ、前方参照専用のストリーム アクセスを提供します。 詳細については、 および を参照してください。 + > アプリケーションが DOM の提供する構造や編集機能を必要としない場合は、**XmlReader** クラスと **XmlWriter** クラスを使って XML への非キャッシュ、前方参照専用のストリーム アクセスを実行できます。 詳細については、 および を参照してください。 - **ノード**オブジェクト メソッドとプロパティと同様の基本的なと適切に定義された特徴セットがあります。 オブジェクトが持つ特性のいくつかを次に示します。 + **Node** オブジェクトには、適切に定義された基本的な特性と、メソッドおよびプロパティのセットが含まれます。 オブジェクトが持つ特性のいくつかを次に示します。 - ノードは 1 つの親ノードを持っています。親ノードはノードの 1 つ上のノードです。 ドキュメント ルートは最上位のノードであり、ドキュメント自身とドキュメント フラグメントしか格納されていないため、親ノードを持っていないノードはドキュメント ルートだけです。 - ほとんどのノードは、複数の子ノードを持つことができます。子ノードは、ノードの 1 つ下のノードです。 子ノードを持つことができるノード型の一覧を次に示します。 - - **ドキュメント** + - **Document** - - **Documentfragment** + - **DocumentFragment** - **EntityReference** - - **要素** + - **Element** - - **属性** + - **Attribute** - **XmlDeclaration**、**表記**、**エンティティ**、 **CDATASection**、**テキスト**、 **コメント**、 **ProcessingInstruction**、および**DocumentType**ノードに子ノードがありません。 + **XmlDeclaration** ノード、**Notation** ノード、**Entity** ノード、**CDATASection** ノード、**Text** ノード、**Comment** ノード、**ProcessingInstruction** ノード、**DocumentType** ノードは子ノードを持ちません。 -- ダイアグラム ビューで表される、同じレベルにあるノード、 **book**と**pubinfo**は兄弟です。 +- 図中に **book** および **pubinfo** として同レベルに表現されているノードは兄弟です。 - DOM の特性の 1 つは、属性の取り扱い方法にあります。 属性は、互いに親子関係や兄弟関係を持つノードではありません。 属性は要素ノードのプロパティと見なされ、名前と値ペアから構成されます。 たとえば、要素 `format="dollar` に関連付けられている `price`" という形式の XML データがある場合は、単語 `format` が名前になり、`format` 属性の値は `dollar` になります。 取得する、`format="dollar"`の属性、**価格** ノードを呼び出す、 **GetAttribute**メソッドにカーソルがあるときに、`price`要素ノードです。 詳細については、次を参照してください。 [、DOM 内の属性へのアクセス](../../../../docs/standard/data/xml/accessing-attributes-in-the-dom.md)です。 + DOM の特性の 1 つは、属性の取り扱い方法にあります。 属性は、互いに親子関係や兄弟関係を持つノードではありません。 属性は要素ノードのプロパティと見なされ、名前と値ペアから構成されます。 たとえば、要素 `format="dollar` に関連付けられている `price`" という形式の XML データがある場合は、単語 `format` が名前になり、`format` 属性の値は `dollar` になります。 **price** ノードの `format="dollar"` 属性を取得するには、カーソルが `price` 要素ノード上にあるときに **GetAttribute** メソッドを呼び出します。 詳細については、「[DOM の属性へのアクセス](../../../../docs/standard/data/xml/accessing-attributes-in-the-dom.md)」を参照してください。 XML をメモリに読み込むと、ノードが作成されます。 ただし、すべてのノードが同じタイプというわけではありません。 XML の要素の規則と構文は、処理命令の規則と構文とは異なります。 したがって、さまざまなデータが読み込まれるときに、個々のノードにノード型が割り当てられます。 このノード型によって、ノードの特性と機能が決定されます。 - メモリ内で生成されるノードの種類の詳細については、次を参照してください。 [XML ノードの種類](../../../../docs/standard/data/xml/types-of-xml-nodes.md)です。 ノード ツリーに作成されたオブジェクトの詳細については、次を参照してください。[オブジェクト階層の XML データへのマップ](../../../../docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md)です。 + メモリに生成されるノード型の詳細については、「[XML ノードの種類](../../../../docs/standard/data/xml/types-of-xml-nodes.md)」を参照してください。 ノード ツリーに作成されるオブジェクトの詳細については、「[オブジェクト階層の XML データへのマップ](../../../../docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md)」を参照してください。 - Microsoft では、XML ドキュメントの操作を容易にするために、W3C (World Wide Web Consortium) DOM Level 1 および Level 2 で規定されている API を拡張しています。 W3C の標準を完全にサポートする一方で、追加のクラス、メソッド、プロパティにより、W3C の XML DOM で実現できる以上の機能が付加されています。 新しいクラスを使用すると、リレーショナル データにアクセスし、ADO.NET との同期をとりながら、データを XML として公開できます。 詳細については、次を参照してください。 [DataSet と XmlDataDocument の同期](../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md)です。 + Microsoft では、XML ドキュメントの操作を容易にするために、W3C (World Wide Web Consortium) DOM Level 1 および Level 2 で規定されている API を拡張しています。 W3C の標準を完全にサポートする一方で、追加のクラス、メソッド、プロパティにより、W3C の XML DOM で実現できる以上の機能が付加されています。 新しいクラスを使用すると、リレーショナル データにアクセスし、ADO.NET との同期をとりながら、データを XML として公開できます。 詳細については、「[Dataset と XmlDataDocument の同期](../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md)」を参照してください。 - DOM が最も役に立つのは、XML データをメモリに読み込み、その構造を変更したり、ノードを追加または削除したり、要素内のテキストとしてノードが保持しているデータを変更したりする場合です。 ただし、他のクラスも用意されており、シナリオによっては DOM より高速になる場合もあります。 XML へのアクセスを高速かつ非キャッシュで順方向専用ストリームを使用して、 **XmlReader**と**XmlWriter**です。 カーソル モデルとランダム アクセスを必要がある場合と**XPath**を使用して、 **XPathNavigator**クラスです。 + DOM が最も役に立つのは、XML データをメモリに読み込み、その構造を変更したり、ノードを追加または削除したり、要素内のテキストとしてノードが保持しているデータを変更したりする場合です。 ただし、他のクラスも用意されており、シナリオによっては DOM より高速になる場合もあります。 XML に対して高速、非キャッシュ、前方参照専用のストリーム アクセスを行うには、**XmlReader** と **XmlWriter** を使用します。 カーソル モデルと **XPath** を使用したランダム アクセスが必要な場合は、**XPathNavigator** クラスを使用します。 -## 関連項目 +## 参照 [XML ノードの種類](../../../../docs/standard/data/xml/types-of-xml-nodes.md) [オブジェクト階層の XML データへのマップ](../../../../docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md) diff --git a/docs/standard/data/xml/xml-element-and-attribute-name-verification-when-creating-new-nodes.md b/docs/standard/data/xml/xml-element-and-attribute-name-verification-when-creating-new-nodes.md index e682f4a1e54..bb26a568a7d 100644 --- a/docs/standard/data/xml/xml-element-and-attribute-name-verification-when-creating-new-nodes.md +++ b/docs/standard/data/xml/xml-element-and-attribute-name-verification-when-creating-new-nodes.md @@ -9,18 +9,21 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: b489f647-a175-4659-ada4-170058bb41d0 -caps.latest.revision: "5" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: c041d5d2830222f3fae09a39f1ea10eb08772388 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 36b9761cefb1dba47c88d053773c89e4312dee9d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 新しいノードの作成時における XML 要素名および属性名の検証 -XML ドキュメント オブジェクト モデル (DOM) は、新しい要素ノードまたは属性ノードを作成するときに名前の有効性を確認します。 名前に無効な文字が含まれていると、例外がスローされます。 名前が有効であり、エンコードされた正常に使用する必要があることを確認して、 **XmlConvert**クラスを名前をエンコードおよびデコードし、アプリケーション レベルに戻ります。 **XmlWriter**整形式 XML が生成されることを確認する追加の作業を行う方法があります。 +XML ドキュメント オブジェクト モデル (DOM) は、新しい要素ノードまたは属性ノードを作成するときに名前の有効性を確認します。 名前に無効な文字が含まれていると、例外がスローされます。 名前が正しくエンコードされ、有効であることを保証するには、**XmlConvert** クラスを使用して名前をエンコードし、アプリケーション レベルで名前をデコードする必要があります。 **XmlWriter** には、整形式の XML を生成するための追加の処理を行うメソッドが用意されています。 -## 関連項目 +## 参照 [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) diff --git a/docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md b/docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md index 58531cb38cd..afe593063b0 100644 --- a/docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md +++ b/docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md @@ -9,50 +9,53 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: f6ebb1a1-f2ca-49b9-92c9-0150940cf6e6 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 5d03a0ca7518b06c08d98967d7c5ae864f1c04ac -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d0728ff5d695ccc5fc5912631d29c89b7cc36ca5 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XML とリレーショナル データおよび ADO.NET との統合 -**XmlDataDocument**クラスは、派生クラスの**XmlDocument**、XML データが含まれています。 利点、 **XmlDataDocument**リレーショナル データと階層データ間のブリッジを提供できることです。 **XmlDocument**に連結できる、**データセット**2 つのクラスに含まれるデータに加えられた変更を同期できるは、両方のクラスとします。 **XmlDocument**にバインドされている、**データセット**XML とリレーショナル データを統合することができ、データ、XML、またはリレーショナル形式で表現する必要はありません。 両方の処理ができ、一方のデータ表現だけに制限されることもありません。 +**XmlDocument** の派生クラスである **XmlDataDocument** クラスには XML データが格納されます。 **XmlDataDocument** の利点は、リレーショナル データと階層データとを仲介できることです。 **DataSet** に連結できるのは **XmlDocument** であり、どちらのクラスも、それぞれが格納しているデータが変更されたときに、変更内容の同期をとることができます。 **DataSet** に連結した **XmlDocument** では XML をリレーショナル データと統合できるため、データ表現は XML でもリレーショナル形式でもかまいません。 両方の処理ができ、一方のデータ表現だけに制限されることもありません。 2 つの形式でデータが使用できる利点は次のとおりです。 - XML ドキュメントの構造部分はデータセットに対応付けることができ、効率的な格納、インデックス付け、および検索ができる。 -- リレーション形式で格納された XML データに対して、カーソル モデルを使用して、効率的な変換、検証、および移動ができる。 ときに、実行できますより効率的によりに、XML が格納されている場合は、リレーショナル構造、 **XmlDocument**モデル。 +- リレーション形式で格納された XML データに対して、カーソル モデルを使用して、効率的な変換、検証、および移動ができる。 **XmlDocument** モデルに XML が格納されている場合よりも、リレーショナル構造の方が効率的に処理できる場合があります。 -- **データセット**XML の一部を格納することができます。 つまり、使用することができます**XPath**または**XslTransform**に保存する、**データセット**要素や関心のある属性だけです。 そこから、変更できるよう、データのより小さく、フィルター選択されたサブセットにでより大きなデータを反映する変更内容を**XmlDataDocument**です。 +- **DataSet** に XML の一部を格納できる。 **XPath** または **XslTransform** を使用して、目的の要素や属性だけを **DataSet** に格納できます。 この場合は、抽出された部分的なデータに対して変更を行い、その変更を **XmlDataDocument** 内のデータに反映させることができます。 - 読み込まれたデータの変換を実行することも、**データセット**SQL Server からです。 別のオプションは、.NET Framework クラスからスタイル マネージ WinForm をバインドして、WebForm のコントロールを**データセット**ですが、XML 入力ストリームから設定します。 + SQL サーバーから **DataSet** に読み込まれたデータを変換することもできます。 また、.NET Framework のクラスの形式で管理されている WinForm および WebForm のコントロールを、XML 入力ストリームからデータを読み込んだ **DataSet** に連結することもできます。 - サポートするだけでなく**XslTransform**、 **XmlDataDocument**リレーショナル データを公開**XPath**クエリおよび検証します。 基本的には、すべての XML サービスをリレーショナル データで利用でき、コントロールの連結やコード生成などのすべてのリレーショナル機能を XML に基づく構造化データで、XML の厳密性を損なうことなく利用できます。 + **XslTransform** のサポートの他に、**XmlDataDocument** は、リレーショナル データに対する **XPath** クエリと検証もサポートします。 基本的には、すべての XML サービスをリレーショナル データで利用でき、コントロールの連結やコード生成などのすべてのリレーショナル機能を XML に基づく構造化データで、XML の厳密性を損なうことなく利用できます。 - **XmlDataDocument**から継承されますが、 **XmlDocument**、W3C DOM の実装を提供 ファクトを**XmlDataDocument**が関連付けられ、そのデータのサブセットを格納、**データセット**制限またはとしての使用を変更していない、 **XmlDocument**任意の方法でします。 使用する記述されたコード、 **XmlDocument**に対して動作が変更されない、 **XmlDataDocument**です。 **データセット**テーブル、列、リレーション、および制約を定義することで、同じデータのリレーショナル ビューを提供し、スタンドアロンのメモリ内のユーザーのデータ ストアです。 + **XmlDataDocument** は **XmlDocument** から継承されているため、W3C DOM が実装されています。 **XmlDataDocument** は、**DataSet** に関連付けられており、そのデータの一部を格納していますが、**XmlDocument** として使用する場合に制限や特別な対応が必要になることはありません。 **XmlDocument** を使用しているコードは、**XmlDataDocument** を使用する場合でも、修正せずに動作させることができます。 **DataSet** は、テーブル、列、リレーション、および制約を定義することで、データをリレーショナル形式で提示できる、スタンドアロンかつインメモリのユーザー データ ストアです。 - 次の図は、XML データを持つことを別の関連付けには、**データセット**と**XmlDataDocument**です。 + XML データと **DataSet** の関係と、XML データと **XmlDataDocument** の関連との違いを次の図に示します。 - ![XML データセット](../../../../docs/standard/data/xml/media/xmlintegrationwithrelationaldataandadodotnet.gif "xmlIntegrationWithRelationalDataAndADOdotNet") + ![XML DataSet](../../../../docs/standard/data/xml/media/xmlintegrationwithrelationaldataandadodotnet.gif "xmlIntegrationWithRelationalDataAndADOdotNet") - 図に示す XML データを直接に読み込めること、**データセット**、リレーショナルな方法で XML を直接操作できます。 または、これは、DOM の派生クラスに、XML を読み込むことができます、 **XmlDataDocument**、およびその後読み込みと同期されている、**データセット**です。 **データセット**と**XmlDataDocument** 1 つのセット上で同期が、データの 1 つのストア内のデータに加えられた変更は他方のストアに反映されます。 + この図では、XML データは **DataSet** に直接読み込むことができ、XML をリレーショナルな方法で直接操作できることが示されています。 また、XML を DOM の派生クラスである **XmlDataDocument** に読み込み、その後、**DataSet** と同期させることができることも示されています。 **DataSet** と **XmlDataDocument** は、1 つのデータ セットを基にして同期がとられているため、一方のデータ ストアのデータを変更すると、他方のストアに反映されます。 - **XmlDataDocument**からすべての編集と移動機能を継承、 **XmlDocument**です。 ありますを使用する場合、 **XmlDataDocument**と同期されているその継承された機能と、**データセット**に直接 XML を読み込むよりも適切なオプションは、**データセット**. 次の表に、読み込みに使用する方法を選択する際に考慮すべき項目、**データセット**です。 + **XmlDataDocument** は、**XmlDocument** のすべての編集機能と移動機能を継承します。 状況によっては、XML を直接 **DataSet** に読み込む方法よりも、**XmlDataDocument** とその継承された機能を使用して **DataSet** と同期する方法の方が適している場合があります。 **DataSet** にデータを読み込む場合に、どちらの方法を採用すればよいかを判断するための条件を次の表に示します。 |XML を DataSet に直接読み込む方がよい場合|XmlDataDocument と DataSet の同期をとる方がよい場合| |----------------------------------------------|-----------------------------------------------------------| -|内のデータのクエリ、**データセット**は XPath よりも SQL を使用して容易に行えます。|内のデータに対して XPath クエリが必要、**データセット**です。| +|**DataSet** のデータに対するクエリで、XPath よりも SQL を使用する方が簡単である。|**DataSet** のデータに対して XPath クエリが必要である。| |ソース XML 内での要素の順序を保つ必要がない。|ソース XML 内での要素の順序を保つ必要がある。| |要素間の空白や形式をソース XML で保持する必要がない。|空白や形式をソース XML で保持する必要がある。| - 読み込みと XML の記述に直接および out の場合、**データセット**、ニーズに対応するを参照してください[XML からの DataSet の読み込み](../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md)と[XML データとしての DataSet の書き込み](../../../../docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data.md)です。 + **DataSet** に XML を直接読み込んだり、DataSet から XML を書き出す方法については、「[XML からの DataSet の読み込み](../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md)」と「[XML データとしての DataSet の書き込み](../../../../docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data.md)」を参照してください。 - 読み込んでいる場合、**データセット**から、 **XmlDataDocument** 、ニーズに対応するを参照してください[Datasetwith XML ドキュメントを同期する](../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md)です。 + **XmlDataDocument** から **DataSet** にデータを読み込む方法については、「[Dataset と XmlDataDocument の同期](../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md)」を参照してください。 -## 関連項目 +## 参照 [DataSet での XML の使用](../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) diff --git a/docs/standard/data/xml/xml-processing-options.md b/docs/standard/data/xml/xml-processing-options.md index e0794838ed9..877284b3c6f 100644 --- a/docs/standard/data/xml/xml-processing-options.md +++ b/docs/standard/data/xml/xml-processing-options.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 33ced8ee-1745-4e71-8dee-ebe70ec067c7 -caps.latest.revision: "5" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 18f8f9c76a1842517340eaa3f74b4778f869403e -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2f270b58d20b3fe9dbc514657def90776bdfe2b5 +ms.sourcegitcommit: 91691981897cf8451033cb01071d8f5d94017f97 ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/09/2018 --- # XML の処理オプション XML データの処理に使用できる Microsoft テクノロジの一覧については、次の表を参照してください。 @@ -26,21 +29,21 @@ XML データの処理に使用できる Microsoft テクノロジの一覧に |**オプション**|**処理の種類**|**説明**| |----------------|-------------------------|---------------------| -|[LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13)
( 名前空間)|メモリ内|-.NET Framework Language-Integrated クエリ (LINQ) テクノロジに基づいています。
-次のような SQL オブジェクト、リレーショナル データ、および XML データのクエリのエクスペリエンスを提供します。
機能を提供直観的なドキュメント作成および変換します。
-新しいコードを記述している場合は、このオプションを使用します。| -||ストリーム ベース|XML データにアクセスする高速、非キャッシュ、前方参照専用の方法を提供します。
-オブジェクトを作成できますを使用して、メソッドを使用して、オブジェクトで有効にする機能のセットを指定し、クラスです。| -||ストリーム ベース|-高速、非キャッシュ、前方参照専用の XML データを生成する方法を提供します。
-オブジェクトを作成できますを使用して、メソッドを使用して、オブジェクトで有効にする機能のセットを指定し、クラスです。| -||メモリ内|実装、 [W3C ドキュメント オブジェクト モデル (DOM) Level 1 Core](http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html)と[DOM Level 2 Core](http://www.w3.org/TR/DOM-Level-2-Core/)の推奨事項です。
-できますを作成、挿入、削除、および使い慣れた DOM モデルに基づくメソッドとプロパティを使用してノードを変更します。
-W3C DOM を使用する既存のコードを変更する場合は、このオプションを使用します。| -||メモリ内|-複数の編集オプションとカーソル モデルを使用してナビゲーション機能を提供します。
XML ドキュメントに含まれていることができます、またはオブジェクト。
-XML の読み取り専用の処理のための優れたパフォーマンスを提供します。
-既存のコードを XPath クエリや XSLT 変換を変更する場合は、このオプションを使用します。| -||メモリ内|-XSL 変換を使用して XML データを変換するためのオプションを提供します。
- [XSLT コンパイラ (xsltc.exe)](../../../../docs/standard/data/xml/xslt-compiler-xsltc-exe.md)を参照することができますが、アプリ内の変換を事前コンパイルされます。| +|[LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13)
( 名前空間)|メモリ内|- .NET Framework の統合言語クエリ (LINQ) テクノロジに基づいています。
- オブジェクト、リレーショナル データ、XML データに対して SQL と同じようにクエリを利用できます。
- 直観的なドキュメント作成および変換機能を提供します。
- このオプションは、新しいコードを記述する場合に使用します。| +||ストリーム ベース|- 高速、非キャッシュ、前方参照専用の XML データ アクセス手段を提供します。
- メソッドを使用してオブジェクトを作成し、 クラスを使用して、そのオブジェクトで有効にする一連の機能を指定できます。| +||ストリーム ベース|- 高速、非キャッシュ、前方参照専用の XML データ生成手段を提供します。
- メソッドを使用してオブジェクトを作成し、 クラスを使用して、そのオブジェクトで有効にする一連の機能を指定できます。| +||メモリ内|- [W3C ドキュメント オブジェクト モデル (DOM) 勧告の DOM Level 1 Core](http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html) および [DOM Level 2 Core](http://www.w3.org/TR/DOM-Level-2-Core/) を実装します。
- 使い慣れた DOM モデルに基づくメソッドとプロパティを使用して、ノードを作成、挿入、削除、変更することができます。
- このオプションは、W3C DOM を利用する既存のコードを変更する場合に使用します。| +||メモリ内|- カーソル モデルを利用する複数の編集オプションとナビゲーション機能を提供します。
- XML ドキュメントを オブジェクトまたは オブジェクトに格納できます。
- XML の読み取り専用処理で優れたパフォーマンスを発揮します。
- このオプションは、XPath クエリや XSLT 変換を使用して既存のコードを変更する場合に使用します。| +||メモリ内|- XSL 変換を使用して XML データを変換するためのオプションを提供します。
- [XSLT コンパイラ (xsltc.exe)](../../../../docs/standard/data/xml/xslt-compiler-xsltc-exe.md) を使用すると、プリコンパイルした変換をアプリで参照できます。| ## Win32 オプションと COM ベースのオプション |**オプション**|**説明**| |----------------|---------------------| -|[XmlLite](http://go.microsoft.com/fwlink/?LinkId=93723)|-高速、安全ですが、非キャッシュ、順方向専用の XML パーサーするのに役立つアプリの構築高性能な XML です。
のダイナミック リンク ライブラリ (Dll); を使用できる任意の言語と連携C++ を使用することをお勧めします。| -|[MSXML](http://go.microsoft.com/fwlink/?LinkId=93722)|の Windows オペレーティング システムに含まれている XML を処理するため COM ベース テクノロジ。
-XPath と XSLT サポートと共に、DOM のネイティブな実装を提供します。
-SAX2 イベント ベース パーサーが含まれています。| +|[XmlLite](https://msdn.microsoft.com/library/ms752872.aspx)|- 高性能 XML アプリの構築に役立つ高速、安全、非キャッシュ、前方参照専用の XML パーサー。
- ダイナミック リンク ライブラリ (DLL) を使用できる任意の言語で動作します。C++ の使用をお勧めします。| +|[MSXML](https://msdn.microsoft.com/library/ms763742.aspx)|- Windows オペレーティング システムに付属する、XML 処理のための COM ベース テクノロジ。
- DOM をネイティブで実装し、XPath と XSLT をサポートしています。
- SAX2 イベントベース パーサーが含まれます。| -## 関連項目 - [DOM モデルを使用して XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-dom-model.md) +## 参照 + [DOM モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-dom-model.md) [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) [XSLT コンパイラ (xsltc.exe)](../../../../docs/standard/data/xml/xslt-compiler-xsltc-exe.md) diff --git a/docs/standard/data/xml/xml-schema-object-model-overview.md b/docs/standard/data/xml/xml-schema-object-model-overview.md index cf951fdebd3..b0dd8a3a3d7 100644 --- a/docs/standard/data/xml/xml-schema-object-model-overview.md +++ b/docs/standard/data/xml/xml-schema-object-model-overview.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 896a1e12-5655-42c6-8cdd-89c12862b34b -caps.latest.revision: "4" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 6a06de3f8fb6351d340e1c8f1bfe8f4105967e25 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: e18a3151228ea7edb5a8380f6ed707ee88d369e5 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XML スキーマ オブジェクト モデルの概要 Microsoft .NET Framework のスキーマ オブジェクト モデル (SOM) は豊富な機能を備えた API で、スキーマの作成、編集、および検証をプログラムで実行できます。 SOM は、ドキュメント オブジェクト モデル (DOM) が XML ドキュメント上で機能するのと同様に、XML スキーマ ドキュメント上で機能します。 XML スキーマ ドキュメントは有効な XML ファイルで、SOM に読み込まれると、スキーマに準拠した他の XML ドキュメントの構造および有効性に関する情報を伝えます。 @@ -45,11 +48,11 @@ Microsoft .NET Framework のスキーマ オブジェクト モデル (SOM) は 名前空間の各クラスの詳細については、.NET Framework クラス ライブラリの 名前空間のリファレンス ドキュメントを参照してください。 -## 関連項目 +## 参照 [XML スキーマの読み取りと書き込み](../../../../docs/standard/data/xml/reading-and-writing-xml-schemas.md) [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md) [XML スキーマの走査](../../../../docs/standard/data/xml/traversing-xml-schemas.md) [XML スキーマの編集](../../../../docs/standard/data/xml/editing-xml-schemas.md) - [インクルードまたは XML スキーマのインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) - [スキーマのコンパイルのための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) - [スキーマ コンパイル後の Infoset](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) + [XML スキーマのインクルードまたはインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマのコンパイル後の情報セット](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) diff --git a/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemacollection.md b/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemacollection.md index 760b0ca15ad..a5835ef9db5 100644 --- a/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemacollection.md +++ b/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemacollection.md @@ -12,21 +12,24 @@ dev_langs: - csharp - vb ms.assetid: ad0b5717-3d32-41ad-a4d7-072c3e492b82 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: ebe8a55cd5dd80be10553948c7765f81429c0957 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c7af29acd33ff3909f0d82e3ef7f7027dc5e44aa +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XmlSchemaCollection を使用した XML スキーマ (XSD) 検証 を使用して、XML スキーマ定義言語 (XSD) スキーマを基準として XML ドキュメントを検証できます。 は、検証を行うたびにスキーマをメモリに読み込まなくてもいいように、スキーマをコレクションに格納することによってパフォーマンスの向上を図ります。 スキーマがスキーマ コレクション内にある場合、コレクション内のスキーマの位置を特定するには `schemaLocation` 属性を使用します。 > [!IMPORTANT] -> クラスは廃止されており、 クラスに置き換えられています。 詳細については、クラス」を参照して[スキーマのコンパイルのための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md)です。 +> クラスは廃止されており、 クラスに置き換えられています。 クラスの詳細については、「[スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md)」を参照してください。 データ ファイルのルート要素の例を次に示します。 @@ -215,7 +218,7 @@ while(vr.Read()) { ``` -## 関連項目 +## 参照 diff --git a/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md b/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md index a4bd220c751..b255f1b9928 100644 --- a/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md +++ b/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md @@ -13,15 +13,18 @@ dev_langs: - vb - cpp ms.assetid: 359b10eb-ec05-4cc6-ac96-c2b060afc4de -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: a6cf857ccecbdac88453fd1fba6e93d609196b1a -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 99e2f66a1aedafe316ab65ae302113ea553146ed +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XmlSchemaSet による XML スキーマ (XSD) 検証 XML ドキュメントは、 の XML スキーマ定義言語 (XSD) スキーマを基準として検証できます。 @@ -30,7 +33,7 @@ XML ドキュメントは、 の XML スキ XML ドキュメントは、 クラスの メソッドを使用して検証します。 XML ドキュメントを検証するには、XML ドキュメントの検証に使用する XML スキーマ定義言語 (XSD) スキーマを持つ オブジェクトを作成します。 > [!NOTE] -> 名前空間には、簡単に使用する場合に、XSD ファイルに対して XML ツリーを検証する拡張メソッドが含まれています。 [LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13)です。 LINQ to XML による XML ドキュメントの検証の詳細については、次を参照してください。[する方法: 検証を使用して XSD](http://msdn.microsoft.com/library/481a97fa-6e96-46f2-8c9a-415555fac33b)です。 +> [LINQ to XML](http://msdn.microsoft.com/library/f0fe21e9-ee43-4a55-b91a-0800e5782c13) を使用する際、 名前空間に含まれる拡張メソッドによって、XSD ファイルを基準として XML ツリーを簡単に検証することができます。 LINQ to XML を使用した XML ドキュメントの検証に関する詳細については、「[方法: XSD を使用して検証する](http://msdn.microsoft.com/library/481a97fa-6e96-46f2-8c9a-415555fac33b)」を参照してください。 独立したスキーマまたはスキーマのセット ( を使用) を に追加するには、そのどちらかを メソッドにパラメーターとして渡します。 ドキュメントを検証する際には、ドキュメントの対象名前空間がスキーマ セット内のスキーマの対象名前空間と一致している必要があります。 @@ -50,6 +53,6 @@ XML ドキュメントは、 の XML スキ [!code-csharp[XmlSchemaSetOverall Example#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaSetOverall Example/CS/xmlschemasetexample.cs#1)] [!code-vb[XmlSchemaSetOverall Example#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaSetOverall Example/VB/xmlschemasetexample.vb#1)] -## 関連項目 - [スキーマのコンパイルのための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) - [XML スキーマの操作](../../../../docs/standard/data/xml/working-with-xml-schemas.md) +## 参照 + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [XML スキーマの使用](../../../../docs/standard/data/xml/working-with-xml-schemas.md) diff --git a/docs/standard/data/xml/xml-type-support-implementation-notes.md b/docs/standard/data/xml/xml-type-support-implementation-notes.md index 883d9d15c69..3283e85bae5 100644 --- a/docs/standard/data/xml/xml-type-support-implementation-notes.md +++ b/docs/standard/data/xml/xml-type-support-implementation-notes.md @@ -9,21 +9,24 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 26b071f3-1261-47ef-8690-0717f5cd93c1 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 5e99573fc3a82db7798426172a13a78e10c65636 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 8c2706782ed1242ecdb5af1fdfab7a3f24e19236 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XML 型サポートの実装に関するメモ このトピックでは、認識しておく必要があるいくつかの実装上の詳細について説明します。 ## リストのマッピング - 、 **Type[]**、およびを XML スキーマ定義言語 (XSD) のリスト型を表す種類が使用されます。 + 、**Type[]**、 型は、XML スキーマ定義言語 (XSD) のリスト型を表現するために使用されます。 ## ユニオンのマッピング ユニオン型は 型または 型を使用して表現されます。 したがって、変換前の型または変換後の型は常に または のどちらかである必要があります。 @@ -54,5 +57,5 @@ ms.lasthandoff: 10/18/2017 ### xs:anyURI および System.Uri 相対 URI を表す `xs:anyURI` のインスタンスが にマップされている場合、 オブジェクトには基本 URI がありません。 -## 関連項目 +## 参照 [System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md) diff --git a/docs/standard/data/xml/xmldatadocument-input-to-xsltransform.md b/docs/standard/data/xml/xmldatadocument-input-to-xsltransform.md index ca2bd227b71..61212fbaea7 100644 --- a/docs/standard/data/xml/xmldatadocument-input-to-xsltransform.md +++ b/docs/standard/data/xml/xmldatadocument-input-to-xsltransform.md @@ -9,31 +9,34 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: a0b536b6-cdb3-4a44-86c2-3b2ebc7bd4c9 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 813c240ca0115015158988e1226d25890cde6939 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 7259bd5f033647f26ad41e2d2eca3e8642e0db5c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XslTransform への XmlDataDocument の入力 > [!NOTE] -> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 - Microsoft [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] は、XML ドキュメント内のデータにアクセスするための XML ドキュメント オブジェクト モデル (DOM) を実装しているほか、XML ドキュメント内で読み込み、書き込み、移動を行うためのさまざまなクラスも実装しています。 で見つかった、名前空間、リレーショナル データと同期する機能とデータへのリレーショナル アクセスを提供する、です。 のリレーショナル表現を介して構造化 XML を表示すると同時に操作したり、 の DOM 表現を介して半構造化 XML を操作したりすることができます。 したがって、 は、XML 環境とリレーショナル環境の境界を越えて機能します。 + Microsoft [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] は、XML ドキュメント内のデータにアクセスするための XML ドキュメント オブジェクト モデル (DOM) を実装しているほか、XML ドキュメント内で読み込み、書き込み、移動を行うためのさまざまなクラスも実装しています。 名前空間にある は、 内のデータへのリレーショナル アクセス機能およびリレーショナル データとの同期機能を備えています。 のリレーショナル表現を介して構造化 XML を表示すると同時に操作したり、 の DOM 表現を介して半構造化 XML を操作したりすることができます。 したがって、 は、XML 環境とリレーショナル環境の境界を越えて機能します。 データがリレーショナル構造に格納されている場合、そのデータを XSLT 変換への入力として使用するには、そのリレーショナル データを に読み込み、 に関連付けます。 への入力である は、 インターフェイスを介して に実装されます。 リレーショナル データを受け取り、それを に読み込み、 内の同期機能を利用することで、そのリレーショナル データに対する XSLT 変換を実行できます。 - リレーショナル データに変換を適用する方法の詳細については、次を参照してください。[データセットに、XSLT 変換を適用する](../../../../docs/framework/data/adonet/dataset-datatable-dataview/applying-an-xslt-transform-to-a-dataset.md)です。 + リレーショナル データへの変換の適用については、「[DataSet への XSLT 変換の適用](../../../../docs/framework/data/adonet/dataset-datatable-dataview/applying-an-xslt-transform-to-a-dataset.md)」を参照してください。 -## 関連項目 +## 参照 [DataSet と XmlDataDocument の同期](../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md) - [XslTransform クラスによる XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) [変換における XPathNavigator](../../../../docs/standard/data/xml/xpathnavigator-in-transformations.md) [変換における XPathNodeIterator](../../../../docs/standard/data/xml/xpathnodeiterator-in-transformations.md) [XslTransform への XPathDocument の入力](../../../../docs/standard/data/xml/xpathdocument-input-to-xsltransform.md) diff --git a/docs/standard/data/xml/xmldocument-input-to-xsltransform.md b/docs/standard/data/xml/xmldocument-input-to-xsltransform.md index 87e5227dc5c..546017f79ee 100644 --- a/docs/standard/data/xml/xmldocument-input-to-xsltransform.md +++ b/docs/standard/data/xml/xmldocument-input-to-xsltransform.md @@ -12,21 +12,24 @@ dev_langs: - csharp - vb ms.assetid: 97115892-410a-4657-ab47-1e14dfba73f8 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 554faffb676337f8846eb6ba24152d77793b8fe0 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3900432a08bb525df75b15cf83956f3b92d96e00 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XslTransform への XmlDocument の入力 クラスは、XML ドキュメントの編集機能を持っています。 XML を メソッドに送信する前に編集または変更する必要がある場合は、XML を に読み込み、編集し、 に送信します。 > [!NOTE] -> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 インターフェイスを実装しているため、ドキュメントを編集した後で メソッドに渡すことができます。 @@ -54,10 +57,10 @@ XmlReader rdr = trans.Transform(doc, null, null); while (rdr.Read()) {} ``` -## 関連項目 +## 参照 - [XslTransform クラスによる XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) [変換における XPathNavigator](../../../../docs/standard/data/xml/xpathnavigator-in-transformations.md) [変換における XPathNodeIterator](../../../../docs/standard/data/xml/xpathnodeiterator-in-transformations.md) [XslTransform への XPathDocument の入力](../../../../docs/standard/data/xml/xpathdocument-input-to-xsltransform.md) diff --git a/docs/standard/data/xml/xmlschemacollection-schema-compilation.md b/docs/standard/data/xml/xmlschemacollection-schema-compilation.md index 5c5d637d611..420f74e8f5c 100644 --- a/docs/standard/data/xml/xmlschemacollection-schema-compilation.md +++ b/docs/standard/data/xml/xmlschemacollection-schema-compilation.md @@ -12,41 +12,44 @@ dev_langs: - csharp - vb ms.assetid: 76f28770-7126-428f-9ed5-7b5ae8bad5ee -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 901c3fdc8fdc80cc7c3bf13170646de857a5e009 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c891736534741d1d3d3edb93d75d9f191c2dd573 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XmlSchemaCollection スキーマのコンパイル -**XmlSchemaCollection**がキャッシュまたはライブラリ Xml-data Reduced (XDR) スキーマと XML スキーマ定義言語 (XSD) スキーマを格納および検証できます。 **XmlSchemaCollection**ファイルまたは URL からそれらにアクセスする代わりに、メモリ内のスキーマをキャッシュすることによってパフォーマンスが向上します。 +**XmlSchemaCollection** は、XDR (XML-Data Reduced) スキーマや XML スキーマ定義言語 (XSD) スキーマを格納および検証できるキャッシュ (ライブラリ) です。 **XmlSchemaCollection** は、ファイルや URL からスキーマにアクセスしなくて済むようにスキーマをメモリにキャッシュすることによって、パフォーマンスの向上を図ります。 > [!NOTE] -> ただし、 **XmlSchemaCollection**クラスは、XDR スキーマと XML スキーマ、メソッドおよびプロパティを受け取るかを返しますの両方を格納、 **XmlSchema**オブジェクトをサポートしている XML スキーマのみです。 +> **XmlSchemaCollection** クラスには XDR スキーマと XML スキーマの両方が格納されますが、**XmlSchema** オブジェクトを受け取ったり返したりするメソッドおよびプロパティは XML スキーマのみをサポートします。 > [!IMPORTANT] -> クラスは廃止されており、 クラスに置き換えられています。 詳細については、クラス」を参照して[スキーマのコンパイルのための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md)です。 +> クラスは廃止されており、 クラスに置き換えられています。 クラスの詳細については、「[スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md)」を参照してください。 ## コレクションへのスキーマの追加 - 使用してコレクションにスキーマが読み込まれて、**追加**メソッドの**XmlSchemaCollection**時に、スキーマは名前空間 URI に関連付けられています。 XML スキーマの場合、通常、この名前空間 URI がスキーマのターゲット名前空間になります。 また、XDR スキーマの場合は、この名前空間 URI は、スキーマがコレクションに追加されたときに指定された名前空間です。 + スキーマを **XmlSchemaCollection** に読み込むには、そのコレクションの **Add** メソッドを使用します。読み込み時に、スキーマは名前空間 URI に関連付けられます。 XML スキーマの場合、通常、この名前空間 URI がスキーマのターゲット名前空間になります。 また、XDR スキーマの場合は、この名前空間 URI は、スキーマがコレクションに追加されたときに指定された名前空間です。 ## コレクション内のスキーマの確認 - 使用して、スキーマがコレクション内かどうかを確認することができます、 **Contains**メソッドです。 **Contains**メソッドは、いずれか、 **XmlSchema** (XML スキーマおよび XDR スキーマ) のスキーマに関連付けられているオブジェクト (XML スキーマ専用) または名前空間 URI を表す文字列。 + スキーマがコレクション内にあるかどうかを確認するには、**Contains** メソッドを使用します。 **Contains** メソッドは、**XmlSchema** オブジェクト (XML スキーマ専用) またはスキーマに関連付けられた名前空間 URI を表す文字列 (XML スキーマと XDR スキーマ用) のいずれかを受け取ります。 ## コレクションからのスキーマの取得 - 使用して、コレクションからスキーマを取得することができます、**項目**プロパティです。 **項目**プロパティが、スキーマでは、通常その対象名前空間に関連付けられた URI 名前空間を表す文字列を受け取り、返します、 **XmlSchema**オブジェクト。 **項目**プロパティは XML スキーマにのみ適用されます。 XDR スキーマの場合は、使用できるオブジェクト モデルがないため、戻り値は常に null 参照です。 + コレクションからスキーマを取得するには、**Item** プロパティを使用します。 **Item** プロパティは、スキーマに関連付けられた名前空間 URI (通常は、そのスキーマのターゲット名前空間) を表す文字列を受け取り、**XmlSchema** オブジェクトを返します。 **Item** プロパティは、XML スキーマにだけ適用されます。 XDR スキーマの場合は、使用できるオブジェクト モデルがないため、戻り値は常に null 参照です。 ## XmlSchemaCollection を使用した XML ドキュメントの検証 - 使用して XML インスタンス ドキュメントを検証することができます、 **XmlSchemaCollection**作成することで、 **XmlSchemaCollection**オブジェクト、スキーマをコレクションに追加し、設定、**スキーマ**プロパティを**XmlValidatingReader**を割り当てる、作成した**XmlSchemaCollection**を**XmlValidatingReader**です。 + **XmlSchemaCollection** を使用して XML インスタンス ドキュメントを検証するには、**XmlSchemaCollection** オブジェクトを作成し、開発者が作成したスキーマをそのコレクションに追加し、**XmlValidatingReader** の **Schemas** プロパティを設定して、作成した **XmlSchemaCollection** をその **XmlValidatingReader** に割り当てます。 ### パフォーマンスの向上 - お勧め、同一のスキーマに対して 1 つ以上のドキュメントを検証する場合を使用すること、 **XmlSchemaCollection**メモリ内のスキーマをキャッシュすることによってパフォーマンスが向上が用意されているためです。 + 同じスキーマを基準として複数のドキュメントを検証する場合は、**XmlSchemaCollection** を使用することをお勧めします。このコレクションを使用すると、そのスキーマをメモリ内にキャッシュしてパフォーマンスの向上を図ることができます。 - 次のコード例を作成、 **XmlSchemaCollection**オブジェクトは、このコレクションにスキーマを追加し、設定、**スキーマ**プロパティです。 + **XmlSchemaCollection** オブジェクトを作成し、そのコレクションにスキーマを追加し、**Schemas** プロパティを設定するコード サンプルを次に示します。 ```vb Dim tr as XmlTextReader = new XmlTextReader("Books.xml") @@ -64,6 +67,6 @@ xsc.Add("urn:bookstore-schema", "Books.xsd"); vr.Schemas.Add(xsc); ``` -## 関連項目 +## 参照 [XmlSchemaCollection を使用した XDR 検証](../../../../docs/standard/data/xml/xdr-validation-with-xmlschemacollection.md) [XmlSchemaCollection を使用した XML スキーマ (XSD) 検証](../../../../docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemacollection.md) diff --git a/docs/standard/data/xml/xmlschemaset-for-schema-compilation.md b/docs/standard/data/xml/xmlschemaset-for-schema-compilation.md index 64c167a28b3..fb1a8074ffa 100644 --- a/docs/standard/data/xml/xmlschemaset-for-schema-compilation.md +++ b/docs/standard/data/xml/xmlschemaset-for-schema-compilation.md @@ -12,15 +12,18 @@ dev_langs: - csharp - vb ms.assetid: 55c4b175-3170-4071-9d60-dd5a42f79b54 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 193a9980bba423292921beff6c4c3172ce02fd92 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a834fe8764744f5b2dd41de1f4fe1479059b87bb +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # スキーマをコンパイルするための XmlSchemaSet XML スキーマ定義言語 (XSD) スキーマの格納と検証が可能なキャッシュである について説明します。 @@ -254,11 +257,11 @@ foreach (XmlSchema schema in schemaSet.Schemas()) は、`http://www.contoso.com` URL から読み込むことによって、`http://www.contoso.com/schema.xsd` 名前空間に関するスキーマをインポートしようとします。 `http://www.contoso.com` 名前空間に関する他のスキーマ ドキュメントが 内にある場合でも、インポート元のスキーマでは、スキーマ宣言とそのスキーマ ドキュメント内で定義した型だけしか使用できません。 `schema.xsd` ファイルが `http://www.contoso.com/schema.xsd` URL で見つからない場合、`http://www.contoso.com` 名前空間に関するスキーマは、インポート元のスキーマにインポートされません。 ## XML ドキュメントの検証 - XML ドキュメントは、 内のスキーマに対して検証できます。 スキーマを オブジェクトの プロパティに追加するか、 オブジェクトの プロパティに追加することによって、XML ドキュメントを検証します。 次に、 オブジェクトを作成して、XML ドキュメントを検証するために、 オブジェクトが クラスの メソッドによって使用されます。 + XML ドキュメントは、 内のスキーマに対して検証できます。 スキーマを オブジェクトの プロパティに追加するか、 オブジェクトの プロパティに追加することによって、XML ドキュメントを検証します。 次に、 オブジェクトを作成して、XML ドキュメントを検証するために、 オブジェクトが クラスの メソッドによって使用されます。 - XML の検証の詳細についてはドキュメントを使用して、を参照してください[XmlSchemaSet による XML スキーマ (XSD) 検証](../../../../docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md)です。 + を利用して XML 文書を検証する方法については、「[XmlSchemaSet による XML スキーマ (XSD) 検証](../../../../docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md)」を参照してください。 -## 関連項目 +## 参照 @@ -266,5 +269,5 @@ foreach (XmlSchema schema in schemaSet.Schemas()) - [スキーマ キャッシュとして XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマ キャッシュとしての XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) [XmlSchemaSet による XML スキーマ (XSD) 検証](../../../../docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md) diff --git a/docs/standard/data/xml/xmlschemavalidator-push-based-validation.md b/docs/standard/data/xml/xmlschemavalidator-push-based-validation.md index ccc7394f0a7..00f02276c6f 100644 --- a/docs/standard/data/xml/xmlschemavalidator-push-based-validation.md +++ b/docs/standard/data/xml/xmlschemavalidator-push-based-validation.md @@ -12,15 +12,18 @@ dev_langs: - csharp - vb ms.assetid: 911d4460-dd91-4958-85b2-2ca3299f9ec6 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 5a78321b289dd19c5086223856fd3142f1aef75c -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 60c2effea612a579b4c66b7c30243b785b86a263 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XmlSchemaValidator のプッシュ ベースの検証 は、プッシュ ベース方式で、XML スキーマを基準として XML データを検証する、効率的かつ高性能なしくみを提供します。 たとえば、 クラスでは、XML 情報セットを XML ドキュメントにシリアル化してから検証型 XML リーダーを使用してドキュメントを再解析する必要なしに、情報セットをそのまま検証することができます。 @@ -443,10 +446,10 @@ static void SchemaValidationEventHandler(object sender, ValidationEventArgs e) |状態|切り替え効果| |-----------|----------------| -|検証|( |です。TopLevel*)| -|TopLevel||です。 |です。要素| -|要素|* (コンテンツ\*)? |

\* |

\* コンテンツ\* |です。| -|Content||です。 |です。要素| +|検証| ( | TopLevel*) | +|TopLevel| | | Element| +|要素| * ( Content\*)? |

\* |

\* Content\* || +|Content| | | Element| > [!NOTE] > オブジェクトの現在の状態に従って、メソッドの呼び出しが正しい順序で行われないと、上表の各メソッドによって がスローされます。 @@ -484,5 +487,5 @@ static void SchemaValidationEventHandler(object sender, ValidationEventArgs e) > [!NOTE] > クラスの各種プロパティで返される値は、上の表のどのメソッドを呼び出しても変わることはありません。 -## 関連項目 +## 参照 diff --git a/docs/standard/data/xml/xpath-namespace-navigation.md b/docs/standard/data/xml/xpath-namespace-navigation.md index 9262cd2a789..4f8d4331f89 100644 --- a/docs/standard/data/xml/xpath-namespace-navigation.md +++ b/docs/standard/data/xml/xpath-namespace-navigation.md @@ -9,20 +9,23 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 06cc7abb-7416-415c-9dd6-67751b8cabd5 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: beb6265e8b245893cd7fa5edca28ba1b081481ba -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: cae3fa68d3820e98bee333d0252aeb74b15fe2a7 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XPath 名前空間のナビゲーション XML ドキュメントで XPath クエリを使用するには、XML 名前空間およびそれらの名前空間に含まれる要素を、正しくアドレス指定する必要があります。 名前空間は、名前が複数のコンテキストで使用される場合に生じる可能性がある、あいまいさを防ぎます。たとえば、`ID` という名前は、XML ドキュメントの複数の異なる要素に関連付けられた複数の ID を参照する場合があります。 名前空間の構文では、XML ドキュメントの各要素を識別する、URI、名前、およびプレフィックスを指定します。 - このトピックの例では、 で XML ドキュメントをナビゲーションする際のプレフィックスの使用方法を示します。 名前空間と構文に関する詳細については、次を参照してください。 [XML 名前空間](http://go.microsoft.com/fwlink/?linkid=140245)です。 + このトピックの例では、 で XML ドキュメントをナビゲーションする際のプレフィックスの使用方法を示します。 名前空間と構文の詳細については、「[XML 名前空間入門](http://go.microsoft.com/fwlink/?linkid=140245)」を参照してください。 ## 名前空間の宣言 名前空間の宣言によって、 のインスタンスを使用する際に、XML ドキュメントの各要素の識別とアドレス指定が可能になります。 名前空間のプレフィックスでは、アドレス名前空間用の短い構文が指定されます。 @@ -77,6 +80,6 @@ using (XmlReader reader = XmlReader.Create("response.xml")) 名前空間で完全修飾された名前を使用するのは、利便性のためだけではありません。 前に示したドキュメント定義とコードでは、要素名を完全修飾せずにナビゲーションすると例外がスローされることがわかります。 たとえば、要素の定義が `` で、クエリ文字列が `xpath = "/s:Envelope/s:Body/Search";` の場合、`Search` 要素に名前空間プレフィックスがないので、`null` 要素ではなく `Search` が返されます。 -## 関連項目 - [XPathNavigator による XML データにアクセスします。](../../../../docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md) - [選択、評価、および XPathNavigator を使用して、一致する XML データ](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md) +## 参照 + [XPathNavigator による XML データへのアクセス](../../../../docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md) + [XPathNavigator を使用した XML データの選択、評価、および照合](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md) diff --git a/docs/standard/data/xml/xpathdocument-input-to-xsltransform.md b/docs/standard/data/xml/xpathdocument-input-to-xsltransform.md index ff36ea7f6e6..4a311ae886c 100644 --- a/docs/standard/data/xml/xpathdocument-input-to-xsltransform.md +++ b/docs/standard/data/xml/xpathdocument-input-to-xsltransform.md @@ -12,21 +12,24 @@ dev_langs: - csharp - vb ms.assetid: 7d1bbe8b-ed43-4e62-a5ba-d602d244f4ae -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 80708dfa60636bbb038c3a86e336709339d2ac55 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 22adc805a1174b566d3febf8c6182527df59b32c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XslTransform への XPathDocument の入力 は、 でドキュメントを処理するための読み取り専用キャッシュです。 は、構造的には XML ドキュメント オブジェクト モデル (DOM) に似ていますが、 で XPath 最適化関数を使用することで、XSLT (Extensible Stylesheet Language for Transformations) による処理と XPath (XML Path Language) データ モデルに高度に最適化されています。 > [!NOTE] -> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 変換への入力として を作成するコード サンプルを次に示します。 @@ -46,5 +49,5 @@ StringWriter fs = new StringWriter(); Xslt.Transform(doc, null, fs, null); ``` -## 関連項目 - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) diff --git a/docs/standard/data/xml/xpathnavigator-in-transformations.md b/docs/standard/data/xml/xpathnavigator-in-transformations.md index d6b149f9087..0dcb44bb53f 100644 --- a/docs/standard/data/xml/xpathnavigator-in-transformations.md +++ b/docs/standard/data/xml/xpathnavigator-in-transformations.md @@ -12,22 +12,25 @@ dev_langs: - csharp - vb ms.assetid: 118f97d1-7110-4d1b-b0bd-4143252c0bb0 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 09f89708607ada18181bc6605994c7908e1dd14b -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c492d470fe29041f32039d98ecb854e18f40423c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 変換における XPathNavigator クラスは、データへの読み取り専用のランダム アクセスを提供し、XSLT (Extensible Stylesheet Language for Transformations) への入力として使用することを目的に設計されています。 このクラスは、、および に実装されます。 は、『XML Path Language (XPath)』勧告のセクション 5 で規定されている W3C (World Wide Web Consortium) データ モデルに準拠しています。 は、任意のストアに対するカーソル モデルを定義し、任意のデータ ストアに対する高速で読み取り専用の XPath クエリを提供します。 クラスは、結果ツリー フラグメントの反復処理でも使用されます。 - この API を使用すると、ストア内の現在のノードから情報を取得し、接続されているノードに移動することができます。 カーソル スタイルのモデルの走査のセットを使用してストアを実行するは**移動**メソッドです。 は、常にノード上に配置されます。 どの**移動**メソッドが失敗した場合、変更されません。 + この API を使用すると、ストア内の現在のノードから情報を取得し、接続されているノードに移動することができます。 は、一連の **Move** メソッドを使用してストアの走査を実行するカーソル スタイルのモデルです。 は、常にノード上に配置されます。 **Move** メソッドが失敗した場合、 は変更されません。 クラスは、結果ツリー フラグメントの反復処理で使用されます。 XML を含む `fragment` パラメーターを指定して関数を呼び出すことにより、スタイル シート内で結果ツリー フラグメントを作成するコード サンプルを次に示します。 @@ -70,7 +73,7 @@ ms.lasthandoff: 10/18/2017 Some text ``` - 次のコードでは、 **test.xsl**スタイル シートと**test.xml**データを入力します。 + 次の例では、**test.xsl** スタイル シートと **test.xml** 入力データを使用しています。 ```vb Imports System @@ -117,11 +120,11 @@ public class sample ``` ## 出力 - 変換の結果がファイルで見つかった**out.xml**: + 変換結果はファイル **out.xml** に出力されます。 ```xml Joe ``` -## 関連項目 - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) diff --git a/docs/standard/data/xml/xpathnodeiterator-in-transformations.md b/docs/standard/data/xml/xpathnodeiterator-in-transformations.md index cf7eff9ffd9..9f65dbd2904 100644 --- a/docs/standard/data/xml/xpathnodeiterator-in-transformations.md +++ b/docs/standard/data/xml/xpathnodeiterator-in-transformations.md @@ -12,18 +12,21 @@ dev_langs: - csharp - vb ms.assetid: 2bc6ddc6-674a-4f75-b264-abc35e4e5857 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 28877f10e11f2eebdcbcc8ff75854551302e3f66 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 523a4774de9975812838b22bbb5193e59cd58130 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 変換における XPathNodeIterator - は、XPath (XML Path Language) クエリの結果として作成されたノード セット、または node-set メソッドを使用して結果ツリー フラグメントから変換されたノード セットの反復処理を行うためのメソッドを提供します。 を使用すれば、そのノード セット内のノードの反復処理を実行できます。 ノード セットが取得されると、 クラスは、選択されたノード セットへの読み取り専用、前方参照専用のカーソルを提供します。 ノード セットはドキュメント順に作成されるため、このメソッドを呼び出すと、ドキュメント順で次のノードに移動します。 は、セット内のすべてのノードのノード ツリーを構築するわけではありません。 その代わりに、XPathNodeIterator は、データへの単一ノード ウィンドウを提供し、ツリー内での移動に合わせて、自身が指している基になるノードを公開します。 クラスで利用できるメソッドとプロパティを使用すると、現在のノードから情報を取得できます。 使用可能なメソッドとプロパティの一覧は、次を参照してください。です。 + は、XPath (XML Path Language) クエリの結果として作成されたノード セット、または node-set メソッドを使用して結果ツリー フラグメントから変換されたノード セットの反復処理を行うためのメソッドを提供します。 を使用すれば、そのノード セット内のノードの反復処理を実行できます。 ノード セットが取得されると、 クラスは、選択されたノード セットへの読み取り専用、前方参照専用のカーソルを提供します。 ノード セットはドキュメント順に作成されるため、このメソッドを呼び出すと、ドキュメント順で次のノードに移動します。 は、セット内のすべてのノードのノード ツリーを構築するわけではありません。 その代わりに、XPathNodeIterator は、データへの単一ノード ウィンドウを提供し、ツリー内での移動に合わせて、自身が指している基になるノードを公開します。 クラスで利用できるメソッドとプロパティを使用すると、現在のノードから情報を取得できます。 メソッドとプロパティの一覧については、「」を参照してください。 は XPath クエリの結果作成されたノード セット内を前方にのみ移動するため、移動するときは メソッドを使用します。 このメソッドの戻り値の型は `Boolean` であり、選択されている次のノードに移動すると `true` が返り、選択されているノードがそれ以上ないと `false` が返ります。 このメソッドが `true` を返した場合は、次のプロパティを使用できます。 @@ -35,7 +38,7 @@ ms.lasthandoff: 10/18/2017 ノード セットを初めて参照するときは、 を呼び出して、選択されているセットの最初のノードに を移動する必要があります。 これにより、while ループによる書き込みが可能になります。 - 内のパラメーターとして渡すコード サンプルを次に示します。 コードへの入力が**books.xml**、スタイル シートと**text.xsl**です。 ファイル**test.xml**は、です。 + 内のパラメーターとして渡すコード サンプルを次に示します。 コードへの入力は **books.xml** で、スタイル シートは **text.xsl** です。 ファイル **test.xml** は、 です。 ```vb Imports System @@ -165,5 +168,5 @@ xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
``` -## 関連項目 - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) diff --git a/docs/standard/data/xml/xslt-extension-objects.md b/docs/standard/data/xml/xslt-extension-objects.md index 7649e62aa5e..f13890bb945 100644 --- a/docs/standard/data/xml/xslt-extension-objects.md +++ b/docs/standard/data/xml/xslt-extension-objects.md @@ -9,15 +9,18 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: a4ebdbad-087c-4cfe-acc0-17c48142f81a -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 2916f7da6b990cddef9b86559a71b5206351d558 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 18106b74c19ffdfc33176a12bec07daf2b19b17e +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/19/2018 --- # XSLT 拡張オブジェクト 拡張オブジェクトは、スタイル シートの機能を拡張する場合に使用します。 拡張オブジェクトは、 クラスによって維持されます。 @@ -31,11 +34,11 @@ ms.lasthandoff: 11/21/2017 XSLT 拡張オブジェクトを オブジェクトに追加するには、 メソッドを使用します。 その時点で、修飾名と名前空間 URI がその拡張オブジェクトに関連付けられます。 > [!NOTE] -> メソッドを呼び出すには、FullTrust アクセス許可セットが必要です。 詳細については、次を参照してください。[コード アクセス セキュリティ](http://msdn.microsoft.com/en-us/23a20143-241d-4fe5-9d9f-3933fd594c03)と[NIB: 名前付き権限セット](http://msdn.microsoft.com/en-us/08250d67-c99d-4ab0-8d2b-b0e12019f6e3)です。 +> メソッドを呼び出すには、FullTrust アクセス許可セットが必要です。 詳細については、「[コード アクセス セキュリティ](http://msdn.microsoft.com/library/23a20143-241d-4fe5-9d9f-3933fd594c03)」と [NIB: 名前付きアクセス許可セット](http://msdn.microsoft.com/library/08250d67-c99d-4ab0-8d2b-b0e12019f6e3)に関するページを参照してください。 拡張オブジェクトが返すデータ型は、4 つの基本 XPath データ型である `number`、`string`、`Boolean`、および `node set` のうちのいずれかになります。 - 現在、`params` キーワードを使用して定義されるメソッド (不特定数のパラメーターを渡すことができる) は、 クラスでサポートされていません。 `params` キーワードを使用して定義されたメソッドを使用する XSLT スタイル シートは、正しく動作しません。 詳細については、「 [params](~/docs/csharp/language-reference/keywords/params.md)です。 + 現在、`params` キーワードを使用して定義されるメソッド (不特定数のパラメーターを渡すことができる) は、 クラスでサポートされていません。 `params` キーワードを使用して定義されたメソッドを使用する XSLT スタイル シートは、正しく動作しません。 詳細については、[params](~/docs/csharp/language-reference/keywords/params.md) に関するページを参照してください。 ### XSLT 拡張オブジェクトを使用するために必要な処理 @@ -45,6 +48,6 @@ ms.lasthandoff: 11/21/2017 3. オブジェクトを メソッドに渡します。 -## 関連項目 +## 参照 [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) [XSLT のセキュリティに関する考慮事項](../../../../docs/standard/data/xml/xslt-security-considerations.md) diff --git a/docs/standard/data/xml/xslt-parameters.md b/docs/standard/data/xml/xslt-parameters.md index cb4a1a8ea9d..f15de990544 100644 --- a/docs/standard/data/xml/xslt-parameters.md +++ b/docs/standard/data/xml/xslt-parameters.md @@ -12,15 +12,18 @@ dev_langs: - csharp - vb ms.assetid: fe60aaa0-ae43-4b1c-9be1-426af66ba757 -caps.latest.revision: "2" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: e66d98501bb0bd3a5d5cd5eacc0b09405c158522 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b16ad921e5b16ab7564b2ceedab91c6b6073537d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XSLT パラメーター XSLT パラメーターを に追加するには、 メソッドを使用します。 その時点で、修飾名と名前空間 URI がそのパラメーター オブジェクトに関連付けられます。 @@ -43,11 +46,11 @@ XSLT パラメーターを に追加す |`Number`||XPath| |`Result Tree Fragment`||XSLT| |`Node*`||XPath| -|`Node Set`|

**Xpathnavigator[]**|XPath| +|`Node Set`|

**XPathNavigator[]**|XPath| * これは単一のノードを含むノード セットに相当します。 - パラメーター オブジェクトが上記のクラスのいずれでもない場合、次の規則に従って型が変換されます。 共通言語ランタイム (CLR) の数値型は、 に変換されます。 型は に変換されます。 型は に変換されます。 **Xpathnavigator[]**に変換されますです。 + パラメーター オブジェクトが上記のクラスのいずれでもない場合、次の規則に従って型が変換されます。 共通言語ランタイム (CLR) の数値型は、 に変換されます。 型は に変換されます。 型は に変換されます。 **XPathNavigator[]** は に変換されます。 その他の型はエラーになります。 @@ -75,5 +78,5 @@ XSLT パラメーターを に追加す ``` -## 関連項目 +## 参照 [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) diff --git a/docs/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script.md b/docs/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script.md index 57f62a391e8..8c185800c70 100644 --- a/docs/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script.md +++ b/docs/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script.md @@ -1,5 +1,5 @@ --- -title: "XSLT スタイル シートのスクリプトを使用して<msxsl:script>" +title: "<msxsl:script> を使用した XSLT スタイルシートのスクリプト" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -12,21 +12,24 @@ dev_langs: - csharp - vb ms.assetid: 60e2541b-0cea-4b2e-a4fa-85f4c50f1bef -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 35f24c0a033748917b465510d4f70b75946a0a74 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f9e7ceb40167d970b1886aec17b93f4bcf08f631 +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/19/2018 --- -# XSLT スタイル シートのスクリプトを使用して<msxsl:script> +# <msxsl:script> を使用した XSLT スタイルシートのスクリプト クラスは、`script` 要素を使用した埋め込みスクリプトをサポートしています。 > [!NOTE] -> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳しくは、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」をご覧ください。 クラスは、`script` 要素を使用した埋め込みスクリプトをサポートしています。 スタイル シートが読み込まれると、定義されているすべての関数がクラス定義でラップされることによって Microsoft Intermediate Language (MSIL) にコンパイルされるため、パフォーマンスが低下しません。 @@ -44,15 +47,15 @@ ms.lasthandoff: 10/18/2017 `msxsl:script` 要素は名前空間 `urn:schemas-microsoft-com:xslt` に属しているため、スタイル シートには、名前空間宣言 `xmlns:msxsl=urn:schemas-microsoft-com:xslt` が含まれている必要があります。 - スクリプトの呼び出し元がない場合へのアクセス許可、スクリプト、スタイル シートがコンパイルされずを呼び出すとは失敗します。 + スクリプトの呼び出し元が へのアクセス許可を持っていない場合は、スタイル シート内のスクリプトがコンパイルされず、 への呼び出しが失敗します。 呼び出し元が `UnmanagedCode` へのアクセス許可を持っている場合、スクリプトはコンパイルされますが、許可される操作は、読み込み時に指定される証拠によって異なります。 - または を受け取る メソッドを使用してスタイル シートを読み込む場合は、 パラメーターを引数として受け取る オーバーロードを使用する必要があります。 証拠を指定する、呼び出し元がいる必要がありますへのアクセス許可`Evidence`スクリプト アセンブリ。 呼び出し元がこのアクセス許可を持っていない場合は、`Evidence` パラメーターが `null` に設定されることがあります。 その場合は、 関数がスクリプトを見つけると、処理が失敗します。 `ControlEvidence` へのアクセス許可は、非常に強力なアクセス権であるため、信頼性の高いコード以外に与えてはいけません。 + または を受け取る メソッドを使用してスタイル シートを読み込む場合は、 パラメーターを引数として受け取る オーバーロードを使用する必要があります。 証拠を指定する場合、呼び出し元は、スクリプト アセンブリの `Evidence` を渡すための へのアクセス許可を持っている必要があります。 呼び出し元がこのアクセス許可を持っていない場合は、`Evidence` パラメーターが `null` に設定されることがあります。 その場合は、 関数がスクリプトを見つけると、処理が失敗します。 `ControlEvidence` へのアクセス許可は、非常に強力なアクセス権であるため、信頼性の高いコード以外に与えてはいけません。 アセンブリから証拠を取得するには、`this.GetType().Assembly.Evidence` を使用します。 URI (Uniform Resource Identifier) から証拠を取得するには、`Evidence e = XmlSecureResolver.CreateEvidenceForUrl(stylesheetURI)` を使用します。 - を受け取り、 を受け取らない `Evidence` メソッドを使う場合、アセンブリのセキュリティ ゾーンは既定で Full Trust に設定されます。 詳細については、次を参照してください。と[名前付き権限セット](http://msdn.microsoft.com/en-us/08250d67-c99d-4ab0-8d2b-b0e12019f6e3)です。 + を受け取り、 を受け取らない `Evidence` メソッドを使う場合、アセンブリのセキュリティ ゾーンは既定で Full Trust に設定されます。 詳しくは、「」および「[名前付き権限セット](http://msdn.microsoft.com/library/08250d67-c99d-4ab0-8d2b-b0e12019f6e3)」をご覧ください。 関数は、`msxsl:script` 要素内で宣言できます。 既定でサポートされる名前空間を次の表に示します。 表に示す名前空間の外側でもクラスを使用できます。 ただし、これらのクラスには、完全修飾名が指定されている必要があります。 @@ -65,17 +68,17 @@ ms.lasthandoff: 10/18/2017 |System.Xml|コア XML クラス| |System.Xml.Xsl|XSLT クラス| |System.Xml.XPath|XPath (XML Path Language) クラス| -|Microsoft.VisualBasic|Microsoft Visual Basic スクリプト クラスです。| +|Microsoft.VisualBasic|Microsoft Visual Basic スクリプト用のクラス。| 関数が宣言されると、その関数はスクリプト ブロックに含まれます。 スタイル シートには、相互に独立して機能する複数のスクリプト ブロックを含めることができます。 このため、1 つのスクリプト ブロック内で実行しているときに、別のスクリプト ブロックで定義した関数を呼び出すことはできません。ただし、そのブロックが同じ名前空間とスクリプト言語を持つように宣言されている場合は例外です。 各スクリプト ブロックは独自の言語で記述でき、ブロックはその言語に対応するパーサーの文法規則に従って解析されるため、使われている言語の正しい構文を使用する必要があります。 たとえば、C# スクリプト ブロック内で XML コメント ノード `` を使用すると、エラーが発生します。 - スクリプト関数で定義されている引数および戻り値は、W3C (World Wide Web Consortium) XPath 型または XSLT 型のいずれかである必要があります。 次の表に、対応する W3C 型、それと同等の .NET Framework のクラス (型)、および、XPath 型または XSLT 型には、W3C が入力するかどうか。 + スクリプト関数で定義されている引数および戻り値は、W3C (World Wide Web Consortium) XPath 型または XSLT 型のいずれかである必要があります。 対応する W3C 型、それと同等の .NET Framework のクラス (型)、および W3C 型が XPath 型または XSLT 型のどちらかを次の表に示します。 |型|対応する .NET Framework クラス (型)|XPath 型または XSLT 型| |----------|----------------------------------------------|-----------------------------| |String|System.String|XPath| -|Boolean|System.Boolean|XPath| -|Number|System.Double|XPath| +|ブール型|System.Boolean|XPath| +|数値|System.Double|XPath| |Result Tree Fragment|System.Xml.XPath.XPathNavigator|XSLT| |Node Set|System.Xml.XPath.XPathNodeIterator|XPath| @@ -83,7 +86,7 @@ ms.lasthandoff: 10/18/2017 スクリプト関数が上記以外の型を使用したり、スタイル シートが オブジェクトに読み込まれるときにスクリプト関数がコンパイルを実行しなかったりすると、例外がスローされます。 - 使用する場合、`msxsl:script`要素、強くお勧め、言語に関係なく、スクリプトを CDATA セクション内に配置することです。 コードが配置されている CDATA セクションのテンプレートを示す XML の例を次に示します。 + `msxsl:script` 要素を使うときは、言語に関係なく、スクリプトを CDATA セクション内に配置することをお勧めします。 コードが配置されている CDATA セクションのテンプレートを示す XML の例を次に示します。 ```xml @@ -104,7 +107,7 @@ ms.lasthandoff: 10/18/2017 ``` - この例では、アンパサンドがエスケープされないため、結果として例外がスローされます。 ドキュメントは、XML として読み込まれ、テキストの間に特別な処理は適用されません、`msxsl:script`要素タグ。 + この例では、アンパサンドがエスケープされないため、結果として例外がスローされます。 このドキュメントは XML として読み込まれ、`msxsl:script` 要素タグ間にあるテキストに対して特別な処理は適用されません。 ## 例 埋め込みスクリプトを使用して、半径が指定された円の円周を算出する例を次に示します。 @@ -236,5 +239,5 @@ public class Sample ``` -## 関連項目 - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) diff --git a/docs/standard/data/xml/xslt-transformations-over-different-stores.md b/docs/standard/data/xml/xslt-transformations-over-different-stores.md index 0a0d1c75d57..ff7a8d2c543 100644 --- a/docs/standard/data/xml/xslt-transformations-over-different-stores.md +++ b/docs/standard/data/xml/xslt-transformations-over-different-stores.md @@ -9,23 +9,26 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 369850e9-004a-45d2-b5c3-5060d9135adb -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: b909b754c1d0d3007e06cd04376413d02cbc2f76 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2b642a1f2c29c6b4143b3f520a3df47328fcb41d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 異なるストアでの XSLT 変換 > [!NOTE] -> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 ADO.NET と [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の XML クラスは、データ アクセス用の統合プログラミング モデルとして機能します。 そのデータは、XML データ (タグで区切られたテキスト) とリレーショナル データ (行と列で構成されたテーブル) のどちらとしても表されます。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の XML は、XML データを任意のデータ ストリームから XML ドキュメント オブジェクト モデル (DOM) ノード ツリーに読み込みます。読み込まれたデータにはプログラムからアクセスできます。一方、ADO.NET は、 オブジェクト内のリレーショナル データにアクセスし、それを操作する手段を提供します。 - XML DOM により、XML ドキュメント内のデータや追加のクラスにアクセスして、XML ドキュメント内で読み取り、書き込み、および移動を行うことができます。 これらのクラスは、 名前空間でサポートされます。この名前空間は、XML DOM と ADO.NET が提供するデータ アクセス サービスを統合する役割も果たします。 は、データへのリレーショナル アクセスを可能にします。 は、XML を ADO.NET 内のリレーショナル データに対応付けます。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] ベースのアプリケーションであれば、 名前空間内のクラスを使用して、XML ドキュメントと 内のリレーショナル データの両方にアクセスし、それらを操作できます。 この実装は、データを収集したり、分散させたりするための n 層アーキテクチャをサポートします。 詳細については、次を参照してください。 [XML とリレーショナル データおよび ADO.NET との統合](../../../../docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md)です。 + XML DOM により、XML ドキュメント内のデータや追加のクラスにアクセスして、XML ドキュメント内で読み取り、書き込み、および移動を行うことができます。 これらのクラスは、 名前空間でサポートされます。この名前空間は、XML DOM と ADO.NET が提供するデータ アクセス サービスを統合する役割も果たします。 は、データへのリレーショナル アクセスを可能にします。 は、XML を ADO.NET 内のリレーショナル データに対応付けます。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] ベースのアプリケーションであれば、 名前空間内のクラスを使用して、XML ドキュメントと 内のリレーショナル データの両方にアクセスし、それらを操作できます。 この実装は、データを収集したり、分散させたりするための n 層アーキテクチャをサポートします。 詳細については、「[XML とリレーショナル データおよび ADO.NET との統合](../../../../docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md)」を参照してください。 -## 関連項目 - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) diff --git a/docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md b/docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md index 5b2ca30d85c..287e90616dc 100644 --- a/docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md +++ b/docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md @@ -12,21 +12,24 @@ dev_langs: - csharp - vb ms.assetid: 500335af-f9b5-413b-968a-e6d9a824478c -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 619e37ab63735ea77d3afb0d94f284b2f310efc2 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 5795824a00b6949d5637ca3c75bd311d522c15f5 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XslTransform クラスを使用した XSLT 変換 > [!NOTE] -> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 - XSLT の目的は、たとえば、XML を Web サイトで使われる HTML に変換したり、XML ドキュメントをアプリケーションが必要とするフィールドのみが含まれたドキュメントに変換するなど、ソース XML ドキュメントの内容を形式や構造の異なる別のドキュメントに変換することです。 この変換処理は、www.w3.org/TR/xslt にある World Wide Web Consortium (W3C) の XSLT version 1.0 』 で規定されてです。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] では、 名前空間にある クラスが、この仕様の機能を実装する XSLT プロセッサです。 一覧表示、w3c 勧告 『 XSLT 1.0 』 から実装されていない機能の数が少ないがある[XslTransform からの出力](../../../../docs/standard/data/xml/outputs-from-an-xsltransform.md)です。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の変換アーキテクチャを次の図に示します。 + XSLT の目的は、たとえば、XML を Web サイトで使われる HTML に変換したり、XML ドキュメントをアプリケーションが必要とするフィールドのみが含まれたドキュメントに変換するなど、ソース XML ドキュメントの内容を形式や構造の異なる別のドキュメントに変換することです。 この変換処理の仕様は、www.w3.org/TR/xslt にある W3C (World Wide Web Consortium) 勧告『XSLT Version 1.0』で規定されています。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] では、 名前空間にある クラスが、この仕様の機能を実装する XSLT プロセッサです。 W3C 勧告『XSLT Version 1.0』から実装された機能の他に、「[XslTransform からの出力](../../../../docs/standard/data/xml/outputs-from-an-xsltransform.md)」に記載されている機能がいくつかあります。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の変換アーキテクチャを次の図に示します。 ## 概要 ![XSLT 変換アーキテクチャ](../../../../docs/standard/data/xml/media/xslttransformationswithxsltransformclass.gif "xsltTransformationsWithXslTransformClass") @@ -40,8 +43,8 @@ ms.lasthandoff: 11/21/2017 |------------------------|--------------| ||ストア内で移動するためのカーソル スタイルのモデルを提供し、XPath クエリをサポートする API です。 元になるストアを編集する機能は提供しません。 編集には クラスを使用します。| ||`CreateNavigator` に メソッドを提供するストア用のインターフェイスです。| -||対象のドキュメントの編集を有効にします。 このクラスは を実装しているため、後で XSLT 変換が必要になるドキュメントの編集が可能です。 詳細については、次を参照してください。 [XslTransform への XmlDocument の入力](../../../../docs/standard/data/xml/xmldocument-input-to-xsltransform.md)です。| -||これは の派生クラスです。 このクラスは、 を使用してリレーショナル環境と XML 環境との橋渡しをし、 で指定された対応付けに従って XML ドキュメント内の構造化データのストレージを最適化します。 このクラスは を実装しているため、データベースから取得したリレーショナル データに対して XSLT 変換を実行できます。 詳細については、次を参照してください。 [XML とリレーショナル データおよび ADO.NET との統合](../../../../docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md)です。| +||対象のドキュメントの編集を有効にします。 このクラスは を実装しているため、後で XSLT 変換が必要になるドキュメントの編集が可能です。 詳細については、「[XslTransform への XmlDocument の入力](../../../../docs/standard/data/xml/xmldocument-input-to-xsltransform.md)」を参照してください。| +||これは の派生クラスです。 このクラスは、 を使用してリレーショナル環境と XML 環境との橋渡しをし、 で指定された対応付けに従って XML ドキュメント内の構造化データのストレージを最適化します。 このクラスは を実装しているため、データベースから取得したリレーショナル データに対して XSLT 変換を実行できます。 詳細については、「[XML とリレーショナル データおよび ADO.NET との統合](../../../../docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md)」を参照してください。| ||このクラスは、 の処理および XPath クエリ用に最適化されており、パフォーマンスの高い読み取り専用キャッシュを提供します。 このクラスは を実装しており、XSLT 変換に使用するストアとして適しています。| ||XPath ノード セット内を移動できるようにします。 のすべての XPath 選択メソッドは を返します。 同じストアに対して、選択されているノード セットを表す複数の オブジェクトを作成できます。| @@ -100,9 +103,9 @@ public class Sample } ``` -## 関連項目 +## 参照 - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) [XslTransform クラスの随意動作の実装](../../../../docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md) [変換における XPathNavigator](../../../../docs/standard/data/xml/xpathnavigator-in-transformations.md) [変換における XPathNodeIterator](../../../../docs/standard/data/xml/xpathnodeiterator-in-transformations.md) diff --git a/docs/standard/data/xml/xslt-transformations.md b/docs/standard/data/xml/xslt-transformations.md index 9c27340afe2..ded445e0480 100644 --- a/docs/standard/data/xml/xslt-transformations.md +++ b/docs/standard/data/xml/xslt-transformations.md @@ -9,18 +9,21 @@ ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article ms.assetid: 202f8820-224c-494f-b61e-cd127eac6e03 -caps.latest.revision: "4" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 0d7fa8492487daff68fd8ebaf4159dd537d13e51 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 92d0688b86e6a95af46e09c21c1a8b3cdf66efc3 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # XSLT 変換 -XSLT (Extensible Stylesheet Language Transformation) を使用すれば、ソース XML ドキュメントの内容を、形式や構造が異なる別のドキュメントに変換できます。 たとえば、XSLT を使用して、XML を Web サイトで使われる HTML に変換したり、アプリケーションが必要とするフィールドだけが含まれたドキュメントに変換したりできます。 この変換処理がで指定された、 [W3C XSL Transformations (XSLT) Version 1.0 』 勧告](http://go.microsoft.com/fwlink/?LinkID=49919)です。 +XSLT (Extensible Stylesheet Language Transformation) を使用すれば、ソース XML ドキュメントの内容を、形式や構造が異なる別のドキュメントに変換できます。 たとえば、XSLT を使用して、XML を Web サイトで使われる HTML に変換したり、アプリケーションが必要とするフィールドだけが含まれたドキュメントに変換したりできます。 この変換処理の仕様は、[W3C 勧告『XSL Transformations (XSLT) Version 1.0』](http://go.microsoft.com/fwlink/?LinkID=49919)で規定されています。 クラスは .NET Framework の XSLT プロセッサです。 クラスは、W3C 勧告『XSLT 1.0』をサポートしています。 @@ -37,10 +40,10 @@ XSLT (Extensible Stylesheet Language Transformation) を使用すれば、ソー [XSLT コンパイラ (xsltc.exe)](../../../../docs/standard/data/xml/xslt-compiler-xsltc-exe.md) XSLT コンパイラの使用方法について説明します。 - [XslTransform クラスによる XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) クラスの使用方法について説明します。 - **注**、クラスは、.NET Framework 2.0 リリースで廃止されています。 + **注** .NET Framework 2.0 リリースでは クラスが廃止されています。 ## 参照 diff --git a/docs/standard/data/xml/xsltargumentlist-for-style-sheet-parameters-and-extension-objects.md b/docs/standard/data/xml/xsltargumentlist-for-style-sheet-parameters-and-extension-objects.md index a2d11182fe8..706df5c2856 100644 --- a/docs/standard/data/xml/xsltargumentlist-for-style-sheet-parameters-and-extension-objects.md +++ b/docs/standard/data/xml/xsltargumentlist-for-style-sheet-parameters-and-extension-objects.md @@ -12,21 +12,24 @@ dev_langs: - csharp - vb ms.assetid: de2f0dce-6b98-4908-bba7-ed150cc50355 -caps.latest.revision: "3" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: d4741551b1e6dd2694a0bd65e65a15953f808e59 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b14365266d5a477b32dbbe177d9644596b9e3b38 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # スタイル シート パラメーターと拡張オブジェクト用の XsltArgumentList クラスには、XSLT (Extensible Stylesheet Language for Transformations) パラメーターと XSLT 拡張オブジェクトが含まれています。 これらのパラメーターと拡張オブジェクトは、 メソッドに渡すことで、スタイル シートから呼び出せるようになります。 > [!NOTE] -> では、 クラスと [!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、 クラスと [!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 クラスには、XSLT パラメーターと XSLT 拡張オブジェクトが含まれています。 これらのパラメーターと拡張オブジェクトは、 メソッドに渡すことで、スタイル シートから呼び出せるようになります。 @@ -45,11 +48,11 @@ ms.lasthandoff: 10/18/2017 パラメーター オブジェクトは、W3C (World Wide Web Consortium) 型に対応している必要があります。 対応する W3C 型、それと同等の [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] のクラス (型)、および W3C 型が XPath (XML Path Language) 型または XSLT 型のどちらかを次の表に示します。 -|W3C 型|同等の .NET Framework クラス (型)|XPath 型または XSLT 型| +|W3C 型|対応する .NET Framework クラス (型)|XPath 型または XSLT 型| |--------------|----------------------------------------------|-----------------------------| |String|System.String|XPath| -|Boolean|System.Boolean|XPath| -|Number|System.Double|XPath| +|ブール型|System.Boolean|XPath| +|数値|System.Double|XPath| |Result Tree Fragment|System.Xml.XPath.XPathNavigator|XSLT| |Node Set|System.Xml.XPath.XPathNodeIterator|XPath| @@ -371,5 +374,5 @@ public class Sample `` -## 関連項目 - [XslTransform クラスによる XSLT プロセッサ](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) diff --git a/docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md b/docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md index 1adad7c8cd1..25c2fe4f85b 100644 --- a/docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md +++ b/docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md @@ -12,19 +12,22 @@ dev_langs: - csharp - vb ms.assetid: 88373fe2-4a6b-44f9-8a62-8a3e348e3a46 -caps.latest.revision: "6" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 167cd81ecbc25ca243e3b4a7a6aa7327679528e0 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2f1367268920e4b72f29b77a7f2e96f09a1dce37 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # XslTransform クラスによる XSLT プロセッサの実装 > [!NOTE] -> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 参照してください[XslCompiledTransform クラスを使用して](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)と[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)詳細についてはします。 +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 クラスは、『XSL Transformations (XSLT) Version 1.0』勧告を実装する XSLT プロセッサです。 メソッドはスタイル シートを検索して読み込み、 メソッドは渡されたソース ドキュメントを変換します。 インターフェイスを実装している任意のストアを のソース ドキュメントとして使用できます。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] では、現在、 インターフェイスを 、および に実装しているので、これらすべてを変換用の入力ソース ドキュメントとして使用できます。 @@ -84,9 +87,9 @@ public void Load(XPathNavigator, XmlResolver, Evidence); URI も証拠も指定されていない場合は、スタイル シートに対して設定されている証拠が完全に信頼されます。 信頼されていないソースからスタイル シートを読み込んだり、信頼されていない拡張オブジェクトを に追加したりしないでください。 - セキュリティ レベルと証拠とスクリプト影響の詳細については、次を参照してください。 [XSLT スタイル シートのスクリプトを使用して\](../../../../docs/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script.md)です。 セキュリティ レベルと証拠と拡張オブジェクトに与える影響については、次を参照してください。[スタイル シート パラメーターと拡張オブジェクト用の XsltArgumentList](../../../../docs/standard/data/xml/xsltargumentlist-for-style-sheet-parameters-and-extension-objects.md)です。 + セキュリティ レベルと証拠、それがスクリプトに及ぼす影響の詳細については、「[XSLT Stylesheet Scripting Using \](../../../../docs/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script.md)」( を使用する XSLT スタイルシート スクリプト) を参照してください。 セキュリティ レベルと証拠、それが拡張オブジェクトに与える影響の詳細については、「[スタイル シート パラメーターと拡張オブジェクト用の XsltArgumentList](../../../../docs/standard/data/xml/xsltargumentlist-for-style-sheet-parameters-and-extension-objects.md)」を参照してください。 - セキュリティ レベルと証拠とに与える影響については、`document()`関数を参照してください[外部の XSLT スタイル シートを解決してドキュメント](../../../../docs/standard/data/xml/resolving-external-xslt-style-sheets-and-documents.md)です。 + セキュリティ レベルと証拠、それが `document()` 関数に及ぼす影響については、「[外部の XSLT スタイル シートとドキュメントの解決](../../../../docs/standard/data/xml/resolving-external-xslt-style-sheets-and-documents.md)」を参照してください。 スタイル シートに対しては、多くの入力パラメーターを指定できます。 スタイル シートでは、拡張オブジェクトの関数を呼び出すこともできます。 パラメーターおよび拡張オブジェクトのいずれも クラスを使用してスタイル シートに渡されます。 の詳細については、「」を参照してください。 @@ -213,7 +216,7 @@ Root node is book. ## .NET Framework Version 1.0 から .NET Framework Version 1.1 への XSLT の移行 廃止された [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] バージョン 1.0 の [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] メソッドと新しい バージョン 1.1 の メソッドを次の表に示します。 新しいメソッドでは、証拠を指定することで、スタイル シートのアクセス許可を制限できます。 -|旧式で .NET Framework version 1.0 の Load メソッド|交換用 .NET Framework version 1.1 の Load メソッド| +|廃止された .NET Framework バージョン 1.0 の Load メソッド|新しい .NET Framework バージョン 1.1 の Load メソッド| |------------------------------------------------------|---------------------------------------------------------| |Load(XPathNavigator input);

Load(XPathNavigator input, XmlResolver resolver);|Load(XPathNavigator stylesheet, XmlResolver resolver, Evidence evidence);| |Load(IXPathNavigable stylesheet);

Load(IXPathNavigable stylesheet, XmlResolver resolver);|Load(IXPathNavigable stylesheet, XmlResolver resolver, Evidence evidence);| @@ -221,7 +224,7 @@ Root node is book. 廃止された メソッドと新しい メソッドを次の表に示します。 新しいメソッドは オブジェクトを受け取ります。 -|.NET Framework バージョン 1.0 の Transform メソッドします。|.NET Framework version 1.1 での Transform メソッド| +|廃止された .NET Framework バージョン 1.0 の Transform メソッド|新しい .NET Framework バージョン 1.1 の Transform メソッド| |-----------------------------------------------------------|--------------------------------------------------------------| |XmlReader Transform(XPathNavigator input, XsltArgumentList args)|XmlReader Transform(XPathNavigator input, XsltArgumentList args, XmlResolver resolver)| |XmlReader Transform(IXPathNavigable input, XsltArgumentList args)|XmlReader Transform(IXPathNavigable input, XsltArgumentList args, XmlResolver resolver)| @@ -233,11 +236,11 @@ Root node is book. |Void Transform(IXPathNavigable input, XsltArgumentList args, Stream output)|Void Transform(IXPathNavigable input, XsltArgumentList args, Stream output, XmlResolver resolver)| |Void Transform(String input, String output);|Void Transform(String input, String output, XmlResolver resolver);| - バージョン 1.1 では、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] プロパティが廃止されています。 代わりに、新しいを受け取るオーバー ロード、オブジェクト。 + バージョン 1.1 では、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] プロパティが廃止されています。 代わりに、 オブジェクトを受け取る新しい オーバーロードを使用します。 -## 関連項目 +## 参照 - [XslTransform クラスによる XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) [変換における XPathNavigator](../../../../docs/standard/data/xml/xpathnavigator-in-transformations.md) [変換における XPathNodeIterator](../../../../docs/standard/data/xml/xpathnodeiterator-in-transformations.md) [XslTransform への XPathDocument の入力](../../../../docs/standard/data/xml/xpathdocument-input-to-xsltransform.md) diff --git a/docs/standard/events/how-to-implement-a-provider.md b/docs/standard/events/how-to-implement-a-provider.md index 15dbe91b41f..870cdc478dc 100644 --- a/docs/standard/events/how-to-implement-a-provider.md +++ b/docs/standard/events/how-to-implement-a-provider.md @@ -16,58 +16,61 @@ helpviewer_keywords: - providers [.NET Framework], in observer design pattern - observables [.NET Framework], in observer design pattern ms.assetid: 790b5d8b-d546-40a6-beeb-151b574e5ee5 -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: b9d8f96de8cb3d13568e755f1d5e885e0474d891 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 0f99a611de4bc344a0fd35130a59d496126e3af5 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: プロバイダーを実装する -オブサーバー デザイン パターンでは、データを監視し、通知を送信する、プロバイダー、およびプロバイダーから通知 (コールバック) を受け取る 1 つまたは複数のオブザーバーの分割が必要です。 このトピックでは、プロバイダーを作成する方法について説明します。 関連するトピック[する方法: オブザーバーを実装する](../../../docs/standard/events/how-to-implement-an-observer.md)オブザーバーを作成する方法について説明します。 +オブザーバー デザイン パターンでは、データを監視して通知を送信するプロバイダーと、プロバイダーから通知 (コールバック) を受信する 1 つまたは複数のオブザーバーを分ける必要があります。 このトピックでは、プロバイダーを作成する方法について説明します。 関連トピックの「[方法: オブザーバーを実装する](../../../docs/standard/events/how-to-implement-an-observer.md)」でオブザーバーの作成方法について説明します。 ### プロバイダーを作成するには -1. プロバイダーはオブザーバーに送信するため、データを定義します。 プロバイダーとオブザーバーに送信されるデータを指定できますが、1 つの型は通常、さまざまな種類で表されます。 など、アプリケーションの監視温度、`Temperature`構造データの定義をプロバイダー (で表される、`TemperatureMonitor`次の手順で定義されたクラス) を監視し、どのオブザーバーをサブスクライブします。 +1. プロバイダーがオブザーバーに送信するデータを定義します。 プロバイダーとそれがオブザーバーに送信するデータは 1 つの型にすることができますが、一般的には、異なる型で表されます。 たとえば、温度を監視するアプリケーションでは、`Temperature` 構造によって、プロバイダー (次の手順で定義する `TemperatureMonitor` クラスで表されます) が監視し、オブザーバーがサブスクライブするデータが定義されます。 [!code-csharp[Conceptual.ObserverDesign.HowTo#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/data.cs#1)] [!code-vb[Conceptual.ObserverDesign.HowTo#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/data.vb#1)] -2. 実装する型であるデータ プロバイダーを定義、インターフェイスです。 プロバイダーのジェネリック型引数は、プロバイダーがオブザーバーに送信する型です。 次の例では定義、`TemperatureMonitor`は構築されたクラスのジェネリック型引数で実装`Temperature`です。 +2. データ プロバイダーを定義します。これは インターフェイスを実装する型です。 プロバイダーのジェネリック型引数は、プロバイダーがオブザーバーに送信する型です。 次の例では、`TemperatureMonitor` クラスが定義されています。これは構築 実装であり、ジェネリック型引数の `Temperature` が指定されています。 [!code-csharp[Conceptual.ObserverDesign.HowTo#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#2)] [!code-vb[Conceptual.ObserverDesign.HowTo#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#2)] -3. プロバイダーは格納方法オブザーバーへの参照できるように、適切な場合に、各オブザーバーを通知することができますを決定します。 ジェネリック型などのコレクション オブジェクトではほとんどの場合、オブジェクトはこの目的に使用します。 次の例では、プライベートでインスタンス化されるオブジェクト、`TemperatureMonitor`クラスのコンス トラクターです。 +3. 各オブザーバーに適時通知できるようにプロバイダーがオブザーバーの参照を格納する方法を定義します。 最も一般的には、ジェネリック オブジェクトのようなコレクション オブジェクトがこの目的で使用されます。 次の例では、`TemperatureMonitor` クラス コンストラクターでインスタンス化されるプライベート オブジェクトが定義されます。 [!code-csharp[Conceptual.ObserverDesign.HowTo#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#3)] [!code-vb[Conceptual.ObserverDesign.HowTo#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#3)] -4. 定義、実装できるように、いつでも通知の受信が停止することをサブスクライバーにプロバイダーを返すことができます。 次の例は、入れ子になった定義`Unsubscriber`クラスとサブスクライバーのするサブスクライバーのコレクションの参照を渡し、クラスがインスタンス化されるときです。 このコードを有効にするオブジェクトのサブスクライバー自体をサブスクライバーのコレクションから削除する実装。 +4. 通知の受信をいつでも停止できるように、プロバイダーがサブスクライバーに返す 実装を定義します。 次の例では、入れ子になった `Unsubscriber` クラスが定義されています。インスタンス化されるとき、サブスクライバー コレクションとサブスクライバーの参照がこのクラスに渡されます。 このコードによって、サブスクライバーはオブジェクトの 実装を呼び出し、それ自体をサブスクライバー コレクションから削除できます。 [!code-csharp[Conceptual.ObserverDesign.HowTo#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#4)] [!code-vb[Conceptual.ObserverDesign.HowTo#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#4)] -5. メソッドを実装します。 メソッドがへの参照を渡し、インターフェイスし、手順 3. では、その目的で設計されたオブジェクトに格納する必要があります。 メソッドが返す必要がありますし、手順 4. で開発された実装。 次の例の実装を示しています、メソッドで、`TemperatureMonitor`クラスです。 +5. メソッドを実装します。 このメソッドには インターフェイスの参照が渡されます。手順 3 で、その目的のために作られたオブジェクトに格納されます。 このメソッドはその後、手順 4 で作られる 実装を返します。 次の例は、`TemperatureMonitor` クラスの メソッドの実装です。 [!code-csharp[Conceptual.ObserverDesign.HowTo#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#5)] [!code-vb[Conceptual.ObserverDesign.HowTo#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#5)] -6. 呼び出すことによって適切なオブザーバーに通知が、および実装します。 場合によっては、プロバイダーを呼び出すことがない、メソッドはエラーが発生したとします。 たとえば、次`GetTemperature`メソッドは、モニターを 5 秒ごとに気温データを読み取り、前の読み取り以降には、少なくとも 1 度によって、温度、変更された場合、オブザーバーに通知をシミュレートします。 場合、デバイスが温度を報告していない (つまり、その値が null 場合)、プロバイダーは、転送が完了したことをオブザーバーに通知します。 なお、各オブザーバーを呼び出すだけでなく、メソッド、`GetTemperature`メソッドをクリア、コレクション。 この場合、プロバイダーを行いませんへの呼び出し、そのオブザーバーのメソッドです。 +6. の実装を呼び出し、オブザーバーに適宜通知します。 エラーが発生し、プロバイダーが メソッドを呼び出さない場合もあります。 たとえば、次の `GetTemperature` メソッドは 5 秒おきに温度データを読み取るモニターをシミュレートし、温度が前の計測から 1 度以上変化するとオブザーバーに通知します。 デバイスが温度を報告しないと (つまり、その値が null)、プロバイダーは転送が完了していることをオブザーバーに通知します。 各オブザーバーの メソッドを呼び出すだけではなく、`GetTemperature` メソッドは コレクションを消去することに注意してください。 この場合、プロバイダーはそのオブザーバーの メソッドを呼び出しません。 [!code-csharp[Conceptual.ObserverDesign.HowTo#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#6)] [!code-vb[Conceptual.ObserverDesign.HowTo#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#6)] ## 例 - 次の例には、定義するための完全なソース コードが含まれています、温度監視アプリケーションの実装です。 含まれている、`Temperature`オブザーバーに送信するデータには、構造および`TemperatureMonitor`はクラス、実装します。 + 次の例では、温度を監視するアプリケーションの 実装を定義するソース コードをまるごと確認できます。 オブザーバーに送信されるデータである `Temperature` 構造と 実装である `TemperatureMonitor` クラスが含まれています。 [!code-csharp[Conceptual.ObserverDesign.HowTo#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#7)] [!code-vb[Conceptual.ObserverDesign.HowTo#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#7)] -## 関連項目 +## 参照 [オブサーバー デザイン パターン](../../../docs/standard/events/observer-design-pattern.md) [方法: オブザーバーを実装する](../../../docs/standard/events/how-to-implement-an-observer.md) diff --git a/docs/standard/events/how-to-implement-an-observer.md b/docs/standard/events/how-to-implement-an-observer.md index cfb8e675c7a..fcb88029cba 100644 --- a/docs/standard/events/how-to-implement-an-observer.md +++ b/docs/standard/events/how-to-implement-an-observer.md @@ -15,48 +15,51 @@ helpviewer_keywords: - observers [.NET Framework], observer design pattern - observer design pattern [.NET Framework], implementing observers ms.assetid: 8ecfa9f5-b500-473d-bcf0-5652ffb1e53d -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: a964bd031f6f8a7fc029b2b209b9693b72e688af -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b895739daf1f4844d6300df4788441be67b90254 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: オブザーバーを実装する -オブサーバー デザイン パターンでは、通知を登録すると、監視者、およびデータを監視し、1 つまたは複数のオブザーバーに通知を送信する、プロバイダーの分割が必要です。 このトピックでは、オブザーバーを作成する方法について説明します。 関連するトピック[する方法: プロバイダーを実装する](../../../docs/standard/events/how-to-implement-a-provider.md)プロバイダーを作成する方法について説明します。 +オブザーバー デザイン パターンでは、通知を登録するオブザーバーと、データを監視して 1 人以上のオブザーバーに通知を送信するプロバイダーを分ける必要があります。 このトピックでは、オブザーバーを作成する方法について説明します。 プロバイダーの作成方法については、関連トピックの「[方法: プロバイダーを実装する](../../../docs/standard/events/how-to-implement-a-provider.md)」を参照してください。 ### オブザーバーを作成するには -1. 実装する型であると、オブザーバーを定義、インターフェイスです。 たとえば、次のコードがという名前の型を定義`TemperatureReporter`が構築されたのジェネリック型引数で実装`Temperature`です。 +1. オブザーバーを定義します。これは インターフェイスを実装する型です。 たとえば、次のコードでは、`TemperatureReporter` という型が定義されています。これは、ジェネリック型引数の を使用して構築された `Temperature` の実装です。 [!code-csharp[Conceptual.ObserverDesign.HowTo#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/observer.cs#8)] [!code-vb[Conceptual.ObserverDesign.HowTo#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/observer.vb#8)] -2. オブザーバーがプロバイダーの呼び出し前に、の通知の受信を停止することができる場合、実装を保持するプライベート変数を定義する、 、プロバイダーによって返される実装メソッドです。 呼び出す、プロバイダーのサブスクリプション メソッドを定義することも必要があります。メソッドと、返されたストアオブジェクト。 たとえば、次のコードがという名前のプライベート変数を定義`unsubscriber`を定義し、`Subscribe`メソッドは、プロバイダーの呼び出しをメソッドに返されるオブジェクトを代入し、`unsubscriber`変数。 +2. プロバイダーが の実装を呼び出す前にオブザーバーが通知の受信を停止できる場合は、プロバイダーの メソッドから返される の実装を保持するプライベート変数を定義します。 また、プロバイダーの メソッドを呼び出し、返された オブジェクトを格納するサブスクリプション メソッドも定義する必要があります。 たとえば、次のコードでは `unsubscriber` というプライベート変数を定義し、プロバイダーの メソッドを呼び出し、返されたオブジェクトを `unsubscriber` 変数に割り当てる `Subscribe` メソッドを定義します。 [!code-csharp[Conceptual.ObserverDesign.HowTo#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/observer.cs#9)] [!code-vb[Conceptual.ObserverDesign.HowTo#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/observer.vb#9)] -3. プロバイダーの呼び出し前に、の通知の受信を停止するオブザーバーをできるようにするメソッドを定義するその実装では、この機能が必要な場合です。 次の例では定義、`Unsubscribe`メソッドです。 +3. この機能が必要な場合は、プロバイダーが の実装を呼び出す前に、オブザーバーが通知の受信を停止できるようにするメソッドを定義します。 次の例では、`Unsubscribe` メソッドを定義しています。 [!code-csharp[Conceptual.ObserverDesign.HowTo#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/observer.cs#10)] [!code-vb[Conceptual.ObserverDesign.HowTo#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/observer.vb#10)] -4. によって定義された 3 つのメソッドの実装を提供する、インターフェイス: 、およびです。 プロバイダーと、アプリケーションのニーズに応じて、メソッドがスタブ実装を指定できます。 注意してください、メソッドを渡された処理しないでくださいオブジェクト、例外として、メソッドは、プロバイダーの呼び出しに無料実装します。 次の例は、の実装、`TemperatureReporter`クラスです。 +4. インターフェイスに定義されている 3 つのメソッド 、および の実装を用意します。 プロバイダーとアプリケーションのニーズに応じて、 メソッドと メソッドをスタブ実装にすることができます。 メソッドが渡された オブジェクトを例外として処理しない点と、 メソッドはプロバイダーの の実装を自由に呼び出すことができる点に注意してください。 次の例は、`TemperatureReporter` クラスの の実装を示しています。 [!code-csharp[Conceptual.ObserverDesign.HowTo#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/observer.cs#11)] [!code-vb[Conceptual.ObserverDesign.HowTo#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/observer.vb#11)] ## 例 - 次の例には完全なソース コードが含まれています、`TemperatureReporter`を提供するクラス、温度監視アプリケーションの実装です。 + 次の例には、`TemperatureReporter` クラスの完全なソース コードが含まれています。これは、温度監視アプリケーション向けに の実装を提供するクラスです。 [!code-csharp[Conceptual.ObserverDesign.HowTo#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/observer.cs#12)] [!code-vb[Conceptual.ObserverDesign.HowTo#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/observer.vb#12)] -## 関連項目 +## 参照 [オブサーバー デザイン パターン](../../../docs/standard/events/observer-design-pattern.md) [方法: プロバイダーを実装する](../../../docs/standard/events/how-to-implement-a-provider.md) diff --git a/docs/standard/events/how-to-raise-and-consume-events.md b/docs/standard/events/how-to-raise-and-consume-events.md index 5e634a20d54..97c41534743 100644 --- a/docs/standard/events/how-to-raise-and-consume-events.md +++ b/docs/standard/events/how-to-raise-and-consume-events.md @@ -17,20 +17,23 @@ helpviewer_keywords: - raising events - events [.NET Framework], samples ms.assetid: 42afade7-3a02-4f2e-868b-95845f302f8f -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: d052c865a554977ce5c8b0a347337d9d9b92fc57 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 8efdef82cf98f4f1758cb941dc4610ebf575490c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法 : イベントを発生させる/処理する このトピックの例では、イベントを使用する方法を示します。 ここでは、 デリゲートと デリゲート、およびカスタム デリゲートの例を使用して、データを持つイベントと持たないイベントを示します。 - 例で説明する概念を使用して、[イベント](../../../docs/standard/events/index.md)資料です。 + この例では、「[イベント](../../../docs/standard/events/index.md)」で説明されている概念を使用します。 ## 例 最初の例は、データを持たないイベントを発生させて処理する方法を示しています。 この例には、`Counter` という名前のイベントを持つ、`ThresholdReached` という名前のクラスが含まれます。 このイベントは、カウンター値がしきい値と等しいか、またはそれを超えた場合に発生します。 イベントのデータが指定されていないため、 デリゲートはイベントに関連付けられます。 @@ -51,5 +54,5 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[EventsOverview#7](../../../samples/snippets/csharp/VS_Snippets_CLR/eventsoverview/cs/programwithdelegate.cs#7)] [!code-vb[EventsOverview#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/eventsoverview/vb/module1withdelegate.vb#7)] -## 関連項目 +## 参照 [イベント](../../../docs/standard/events/index.md) diff --git a/docs/standard/events/observer-design-pattern-best-practices.md b/docs/standard/events/observer-design-pattern-best-practices.md index fb2316b4fba..bc128e982a8 100644 --- a/docs/standard/events/observer-design-pattern-best-practices.md +++ b/docs/standard/events/observer-design-pattern-best-practices.md @@ -12,21 +12,24 @@ helpviewer_keywords: - observer design pattern [.NET Framework], best practices - best practices [.NET Framework], observer design pattern ms.assetid: c834760f-ddd4-417f-abb7-a059679d5b8c -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 0edba44efcaa46812f535b39364c2f5e4e3a1afe -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: dc42ccd425b52719b2b69525d2bbbe4607a19982 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # オブサーバー デザイン パターンのベスト プラクティス .NET Framework では、オブザーバー デザイン パターンは、一連のインターフェイスとして実装されます。 インターフェイスはデータ プロバイダーを表し、データ プロバイダーはオブザーバーで通知のサブスクリプションを解除できるようにする 実装も提供します。 インターフェイスはオブザーバーを表します。 このトピックでは、これらのインターフェイスを使用してオブザーバー デザイン パターンを実装するときに、開発者が適用することが望ましいベスト プラクティスについて説明します。 ## スレッド処理 - 通常、プロバイダーは、何らかのコレクション オブジェクトで表されるサブスクライバー リストに特定のオブザーバーを追加することで、 メソッドを実装し、サブスクライバー リストから特定のオブザーバーを削除することで、 メソッドを実装します。 オブザーバーは、これらのメソッドをいつでも呼び出すことができます。 また、プロバイダー/オブザーバーのコントラクトでは、 コールバック メソッドの後にだれがサブスクリプションを解除するかが指定されていないため、プロバイダーとオブザーバーの両方で同じメンバーをリストから削除しようとする可能性があります。 このような可能性があるため、 メソッドと メソッドはどちらもスレッド セーフである必要があります。 通常、この層を使用して、[同時実行コレクション](../../../docs/standard/parallel-programming/data-structures-for-parallel-programming.md)またはロックします。 非スレッド セーフの実装では、スレッド セーフではないことが明示的に記載されている必要があります。 + 通常、プロバイダーは、何らかのコレクション オブジェクトで表されるサブスクライバー リストに特定のオブザーバーを追加することで、 メソッドを実装し、サブスクライバー リストから特定のオブザーバーを削除することで、 メソッドを実装します。 オブザーバーは、これらのメソッドをいつでも呼び出すことができます。 また、プロバイダー/オブザーバーのコントラクトでは、 コールバック メソッドの後にだれがサブスクリプションを解除するかが指定されていないため、プロバイダーとオブザーバーの両方で同じメンバーをリストから削除しようとする可能性があります。 このような可能性があるため、 メソッドと メソッドはどちらもスレッド セーフである必要があります。 通常、これには、[同時実行コレクション](../../../docs/standard/parallel-programming/data-structures-for-parallel-programming.md)またはロックの使用が必要です。 非スレッド セーフの実装では、スレッド セーフではないことが明示的に記載されている必要があります。 その他の保証は、プロバイダー/オブザーバーのコントラクトの最上部のレイヤーで指定されている必要があります。 実装側で要件を追加する場合には、ユーザーがオブザーバー コントラクトについて混乱しないように明確に示す必要があります。 @@ -60,7 +63,7 @@ ms.lasthandoff: 11/21/2017 1 つのオブザーバーを複数のプロバイダーにアタッチすることは可能ですが、推奨パターンは、 インスタンスを 1 つの インスタンスにのみアタッチすることです。 -## 関連項目 +## 参照 [オブサーバー デザイン パターン](../../../docs/standard/events/observer-design-pattern.md) [方法: オブザーバーを実装する](../../../docs/standard/events/how-to-implement-an-observer.md) [方法: プロバイダーを実装する](../../../docs/standard/events/how-to-implement-a-provider.md) diff --git a/docs/standard/events/observer-design-pattern.md b/docs/standard/events/observer-design-pattern.md index 2191a6f5249..20e06359617 100644 --- a/docs/standard/events/observer-design-pattern.md +++ b/docs/standard/events/observer-design-pattern.md @@ -18,18 +18,21 @@ helpviewer_keywords: - IObservable(Of T) interface - observer design pattern [.NET Framework] ms.assetid: 3680171f-f522-453c-aa4a-54f755a78f88 -caps.latest.revision: "14" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 83663a28ac7ae19848552583f2ec39a5e96c7fdc -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c13424ad817ae73b5019f0ce5a7cda54c84adc71 +ms.sourcegitcommit: 91691981897cf8451033cb01071d8f5d94017f97 ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/09/2018 --- # オブサーバー デザイン パターン -オブザーバー デザイン パターンでは、プロバイダーにサブスクライバーを登録して通知を受信することができます。 このデザイン パターンは、プッシュ ベースの通知を必要とするあらゆるシナリオに適しています。 パターンは、定義、*プロバイダー* (とも呼ばれる、*サブジェクト*または*観測可能なオブジェクト*) と 0、1 つ、以上*オブザーバー*です。 プロバイダーにオブザーバーを登録すると、あらかじめ定義した条件、イベント、または状態変化が発生するたびに、プロバイダーのいずれかのメソッドが呼び出されて自動的にすべてのオブザーバーに通知されます。 このメソッド呼び出しで、プロバイダーからオブザーバーに現在の状態の情報を提供することもできます。 .NET Framework でオブザーバー デザイン パターンを適用するには、ジェネリック インターフェイスの および を実装します。 ジェネリック型パラメーターは、通知情報を提供する型を表します。 +オブザーバー デザイン パターンでは、プロバイダーにサブスクライバーを登録して通知を受信することができます。 このデザイン パターンは、プッシュ ベースの通知を必要とするあらゆるシナリオに適しています。 このパターンでは、1 つの*プロバイダー* (*サブジェクト*または*観察可能なオブジェクト*とも呼ばれます) と、0 個以上の*オブザーバー*を定義します。 プロバイダーにオブザーバーを登録すると、あらかじめ定義した条件、イベント、または状態変化が発生するたびに、プロバイダーのいずれかのメソッドが呼び出されて自動的にすべてのオブザーバーに通知されます。 このメソッド呼び出しで、プロバイダーからオブザーバーに現在の状態の情報を提供することもできます。 .NET Framework でオブザーバー デザイン パターンを適用するには、ジェネリック インターフェイスの および を実装します。 ジェネリック型パラメーターは、通知情報を提供する型を表します。 ## パターンの適用 オブザーバー デザイン パターンは、データ ソース (ビジネス ロジック) 層とユーザー インターフェイス (表示) 層のように、2 つの異なるコンポーネントまたはアプリケーション層を明確に分離できるため、分散型のプッシュ ベースの通知に適しています。 このパターンは、プロバイダーがコールバックを使用して現在の情報をクライアントに提供するあらゆる場面で実装できます。 @@ -53,7 +56,7 @@ ms.lasthandoff: 10/18/2017 - プロバイダーがオブザーバーに送信するデータを含むオブジェクト。 このオブジェクトの型は、 インターフェイスと インターフェイスのジェネリック型パラメーターに対応します。 このオブジェクトは、 の実装と同じにすることもできますが、別の型にするのが最も一般的です。 > [!NOTE] -> オブザーバー デザイン パターンを実装するだけでなく、 インターフェイスと インターフェイスを使用して構築されたライブラリを使用することもできます。 たとえば、 [.NET (Rx) の反応拡張](http://go.microsoft.com/fwlink/?LinkId=186345)一連の拡張メソッドと非同期のプログラミングをサポートする LINQ 標準シーケンス演算子で構成されます。 +> オブザーバー デザイン パターンを実装するだけでなく、 インターフェイスと インターフェイスを使用して構築されたライブラリを使用することもできます。 たとえば、[.NET (Rx) の反応拡張](https://msdn.microsoft.com/library/hh242985.aspx)は、非同期プログラミングをサポートする一連の拡張メソッドと LINQ 標準シーケンス演算子で構成します。 ## パターンの実装 次の例では、オブザーバー デザイン パターンを使用して、空港の手荷物受取所の情報システムを実装します。 `BaggageInfo` クラスは、到着便と、各便の手荷物の受け取り場所に関する情報を提供します。 これを次の例に示します。 @@ -97,7 +100,7 @@ ms.lasthandoff: 10/18/2017 ## 関連トピック -|タイトル|説明| +|Title|説明| |-----------|-----------------| |[オブザーバー デザイン パターンのベスト プラクティス](../../../docs/standard/events/observer-design-pattern-best-practices.md)|オブザーバー デザイン パターンを実装するアプリケーションを開発するときのベスト プラクティスについて説明します。| |[方法: プロバイダーを実装する](../../../docs/standard/events/how-to-implement-a-provider.md)|温度監視アプリケーションのプロバイダーを実装するための手順について説明します。| diff --git a/docs/standard/exceptions/best-practices-for-exceptions.md b/docs/standard/exceptions/best-practices-for-exceptions.md index abd9fc5ba71..b595e06de28 100644 --- a/docs/standard/exceptions/best-practices-for-exceptions.md +++ b/docs/standard/exceptions/best-practices-for-exceptions.md @@ -12,17 +12,21 @@ dev_langs: - csharp - vb - cpp -helpviewer_keywords: exceptions, best practices +helpviewer_keywords: +- exceptions, best practices ms.assetid: f06da765-235b-427a-bfb6-47cd219af539 -caps.latest.revision: "28" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 87f9287c3714416ee5d6b63f3c9db311bb97b131 -ms.sourcegitcommit: 5d0e069655439984862a835f400058b7e8bbadc6 +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4c5ea19077ff9ce8e36a33601b7e5e87c64afe60 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/28/2017 +ms.lasthandoff: 12/23/2017 --- # 例外の推奨事項 @@ -72,7 +76,7 @@ ms.lasthandoff: 10/28/2017 ## 事前定義済みの .NET の例外の種類を使用する -事前定義の例外クラスが適用されない場合に限り、新しい例外クラスを導入します。 次に例を示します。 +事前定義の例外クラスが適用されない場合に限り、新しい例外クラスを導入します。 例: - オブジェクトの現在の状態に対して、プロパティの設定またはメソッドの呼び出しが適切でない場合は、 をスローします。 @@ -90,7 +94,7 @@ ms.lasthandoff: 10/28/2017 独自の例外クラスを作成するときに、少なくとも 3 つの共通コンストラクターを使用します。それらは、既定のコンストラクター、文字列メッセージを受け取るコンストラクター、および文字列メッセージと内部例外を受け取るコンストラクターです。 -* 、既定値を使用します。 +* 既定の値を使用する 。 * 文字列メッセージを受け取る 。 @@ -102,7 +106,7 @@ ms.lasthandoff: 10/28/2017 ユーザー定義例外を作成するときには、リモートで実行されるコードで例外のメタデータを使用できるようにします。 -たとえば、アプリ ドメインをサポートする .NET 実装にはアプリ ドメイン全体で例外が発生する可能性があります。 アプリ ドメイン A が、例外をスローするコードを実行するアプリ ドメイン B を作成するとします。 アプリ ドメイン A が例外を適切にキャッチして処理するには、アプリ ドメイン B によりスローされた例外が含まれているアセンブリを検出できる必要があります。アプリ ドメイン B が、アプリ ドメイン A のアプリケーション ベースではなく、自身のアプリケーション ベースの下のアセンブリに含まれている例外をスローする場合、アプリ ドメイン A は、例外を検出できなくなり、共通言語ランタイムが 例外をスローします。 このような状況を回避するには、例外情報が格納されているアセンブリを次のいずれかの方法で配置します。 +たとえば、アプリ ドメインをサポートする .NET 実装では、アプリ ドメイン間で例外が発生する可能性があります。 アプリ ドメイン A が、例外をスローするコードを実行するアプリ ドメイン B を作成するとします。 アプリ ドメイン A が例外を適切にキャッチして処理するには、アプリ ドメイン B によりスローされた例外が含まれているアセンブリを検出できる必要があります。アプリ ドメイン B が、アプリ ドメイン A のアプリケーション ベースではなく、自身のアプリケーション ベースの下のアセンブリに含まれている例外をスローする場合、アプリ ドメイン A は、例外を検出できなくなり、共通言語ランタイムが 例外をスローします。 このような状況を回避するには、例外情報が格納されているアセンブリを次のいずれかの方法で配置します。 - 2 つのアプリ ドメインが共有する共通アプリケーション ベースにアセンブリを配置する。 @@ -116,7 +120,7 @@ ms.lasthandoff: 10/28/2017 ## 文法的に正しいエラー メッセージを使用する -明確な文を記述し、末尾に句点を含めます。 例外の説明文字列の文の末尾には、必ず句点を使用します。 たとえば、「ログ テーブルがオーバーフローしました。」 適切な説明文字列です。 +明確な文を記述し、末尾に句点を含めます。 例外の説明文字列の文の末尾には、必ず句点を使用します。 たとえば、"ログ テーブルがオーバーフローしました。" は、 適切な説明文字列です。 ## カスタム例外で、必要に応じて追加のプロパティを提供する @@ -134,7 +138,7 @@ ms.lasthandoff: 10/28/2017 [!code-csharp[Conceptual.Exception.Handling#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.exception.handling/cs/source.cs#6)] [!code-vb[Conceptual.Exception.Handling#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.exception.handling/vb/source.vb#6)] -場合によっては、例外のコンストラクターを使用して例外を作成する方が適切な場合もあります。 例など、グローバル例外クラスは、です。 +場合によっては、例外のコンストラクターを使用して例外を作成する方が適切な場合もあります。 などのグローバル例外クラスはその一例です。 ## 例外をスローするときに、中間結果を削除する @@ -177,5 +181,5 @@ catch (Exception ex) } ``` -## 関連項目 +## 参照 [例外](index.md) diff --git a/docs/standard/exceptions/exception-class-and-properties.md b/docs/standard/exceptions/exception-class-and-properties.md index a27666f33c7..629838b3386 100644 --- a/docs/standard/exceptions/exception-class-and-properties.md +++ b/docs/standard/exceptions/exception-class-and-properties.md @@ -12,15 +12,18 @@ helpviewer_keywords: - exceptions, Exception class - Exception class ms.assetid: e2e1f8c4-e7b4-467d-9a66-13c90861221d -caps.latest.revision: "9" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 253a9846e484aa4e54c3433b0bbc8623519bbb7e -ms.sourcegitcommit: bbde43da655ae7bea1977f7af7345eb87bd7fd5f +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 120d56832aad5024ee607d6e3114f164c967a12f +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/21/2017 +ms.lasthandoff: 12/23/2017 --- # Exception クラスとプロパティ @@ -46,7 +49,7 @@ Object から継承するほとんどのクラスは、追加メンバーを実装したり、追加の機能を提供することはありません。これらは、 から継承するだけです。 そのため、例外の最も重要な情報は、例外クラスの階層、例外の名前と、例外に含まれる情報で見つけることができます。 -スローしてから派生したオブジェクトのみをキャッチすることをお勧めから派生した任意のオブジェクトをスローすることができますが、例外としてのクラスです。 から派生していないオブジェクトのスローとキャッチは、すべての言語ではサポートされていないことに注意してください。 + から派生したオブジェクトのみをスローし、キャッチすることをお勧めしますが、 クラスから派生したオブジェクトはすべて例外としてスローできます。 から派生していないオブジェクトのスローとキャッチは、すべての言語ではサポートされていないことに注意してください。 -## 関連項目 +## 参照 [例外](index.md) diff --git a/docs/standard/exceptions/handling-com-interop-exceptions.md b/docs/standard/exceptions/handling-com-interop-exceptions.md index decc07d1b08..ced48bbf522 100644 --- a/docs/standard/exceptions/handling-com-interop-exceptions.md +++ b/docs/standard/exceptions/handling-com-interop-exceptions.md @@ -15,27 +15,30 @@ helpviewer_keywords: - exceptions, COM interop - COM interop, exceptions ms.assetid: e6104aa8-8e5f-4069-b864-def85579c96c -caps.latest.revision: "11" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: bc3e01bc8ca463460ede9544d1d5c095c39a59d0 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: e894d07e77b929b1ea22df2d34e542544ec3b1f3 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # COM 相互運用の例外の処理 マネージ コードとアンマネージ コードは、例外を処理するために一緒に操作できます。 マネージ コードでメソッドが例外をスローすると、共通言語ランタイムは、HRESULT を COM オブジェクトに渡すことができます。 アンマネージ コードでメソッドが失敗して、失敗を示す HRESULT を返した場合、ランタイムはマネージ コードでキャッチできる例外をスローします。 ランタイムは、HRESULT を COM 相互運用からの自動的にマップして、より詳細な例外を取得します。 たとえば、E_ACCESSDENIED は になり、E_OUTOFMEMORY は になるなどです。 - HRESULT がカスタムの結果であるか、またはランタイムで不明な場合は、ランタイムがジェネリック をクライアントに渡します。 **ErrorCode**のプロパティ、 **COMException** HRESULT 値が含まれています。 + HRESULT がカスタムの結果であるか、またはランタイムで不明な場合は、ランタイムがジェネリック をクライアントに渡します。 **COMException** の **ErrorCode** プロパティには、HRESULT 値が含まれます。 ## IErrorInfo の処理 エラーが COM からマネージ コードに渡された場合、ランタイムは例外オブジェクトにエラー情報を入れます。 IErrorInfo をサポートして HRESULT を返す COM オブジェクトは、この情報をマネージ コードの例外に提供します。 たとえば、ランタイムは、COM エラーからの説明を例外の プロパティにマップします。 HRESULT が追加のエラー情報を提供しない場合、ランタイムは例外のプロパティの多くに既定値を指定します。 - アンマネージ コードでメソッドが失敗した場合、例外をマネージ コードのセグメントに渡すことができます。 トピック[の HRESULT と例外](../../../docs/framework/interop/how-to-map-hresults-and-exceptions.md)HRESULT がランタイム例外オブジェクトにマップする方法を示す表が含まれています。 + アンマネージ コードでメソッドが失敗した場合、例外をマネージ コードのセグメントに渡すことができます。 「[HRESULT と例外](../../../docs/framework/interop/how-to-map-hresults-and-exceptions.md)」のトピックには、HRESULT がランタイム例外オブジェクトにマップする方法を示す表が含まれています。 -## 関連項目 +## 参照 [例外](index.md) diff --git a/docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md b/docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md index 80bd113a2ab..c58134606aa 100644 --- a/docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md +++ b/docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md @@ -17,19 +17,22 @@ helpviewer_keywords: - try/catch blocks - catch blocks ms.assetid: 12af9ff3-8587-4f31-90cf-6c2244e0fdae -caps.latest.revision: "9" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 94e5840ca4bb5f871a0ae91f53404de6a60d749d -ms.sourcegitcommit: bbde43da655ae7bea1977f7af7345eb87bd7fd5f +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: ebc59035140ff0464cd959129fdf48a4e9a269f5 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/21/2017 +ms.lasthandoff: 12/23/2017 --- -# 特定の例外を catch ブロックで使用する方法 +# catch ブロックで特定の例外を使用する方法 -一般に、適切なプログラミング、basic を使用するのではなく、特定の種類の例外をキャッチする方法は`catch`ステートメントです。 +一般的には、基本的な `catch` ステートメントを使用するよりも、特定の種類の例外をキャッチするプログラミング手法を勧めします。 例外が発生すると、スタックに渡され、各 catch ブロックが処理する機会を与えられます。 catch ステートメントの順序が重要です。 一般的な例外 catch ブロックまたはコンパイラがエラーを発行する前に、特定の例外を対象とした catch ブロックを配置します。 適切な catch ブロックは、例外の種類を catch ブロックで指定された例外の名前に一致させることで決まります。 特定の catch ブロックがない場合は、汎用 catch ブロック (ある場合) によってキャッチされます。 @@ -39,5 +42,5 @@ ms.lasthandoff: 10/21/2017 [!code-csharp[CatchException#2](../../../samples/snippets/csharp/VS_Snippets_CLR/CatchException/CS/catchexception1.cs#2)] [!code-vb[CatchException#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/CatchException/VB/catchexception1.vb#2)] -## 関連項目 +## 参照 [例外](index.md) diff --git a/docs/standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md b/docs/standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md index 5e2119db016..8b249be0bbe 100644 --- a/docs/standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md +++ b/docs/standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md @@ -1,5 +1,5 @@ --- -title: "方法: Try Catch ブロックを使用して例外をキャッチするには" +title: "方法: Try ブロックと Catch ブロックを使用して例外をキャッチする" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -18,15 +18,18 @@ helpviewer_keywords: - try/catch blocks - catch blocks ms.assetid: a3ce6dfd-1f64-471b-8ad8-8cfaf406275d -caps.latest.revision: "9" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 5a72a21085c37bed4d84518810f69a013d515189 -ms.sourcegitcommit: bbde43da655ae7bea1977f7af7345eb87bd7fd5f +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 192f762872b112ea261d22251175db6867229437 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/21/2017 +ms.lasthandoff: 12/23/2017 --- # Try ブロックと Catch ブロックを使用して例外をキャッチする方法 @@ -43,5 +46,5 @@ ms.lasthandoff: 10/21/2017 > [!NOTE] > ほぼすべてのコード行で例外 (特に、 などの共通言語ランタイムそのものによってスローされる例外) が発生する可能性があります。 ほとんどのアプリケーションではこれらの例外を処理する必要はありませんが、他のユーザーが使用するライブラリを記述する際には、この可能性に注意する必要があります。 Try ブロック内でコードを設定するタイミングに関しては、「[例外の推奨事項](best-practices-for-exceptions.md)」を参照してください。 -## 関連項目 +## 参照 [例外](index.md) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index 29d2cd20d36..84804a4665a 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -8,11 +8,14 @@ ms.topic: article ms.custom: updateeachrelease ms.prod: .net ms.technology: dotnet-standard -ms.openlocfilehash: 20152a951f11b1b923209b56b31663a9a8a81587 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 838f4f6d78b4544a538e9c4bd6c487bcc731270b +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # ターゲット フレームワーク @@ -30,7 +33,7 @@ ms.lasthandoff: 10/18/2017 次の表では、最も一般的なターゲット フレームワーク、それらの参照方法、およびそれらが実装する [.NET Standard](~/docs/standard/net-standard.md) のバージョンを定義します。 これらのターゲット フレームワークのバージョンは、最新の安定したバージョンです。 プレリリース バージョンは記載されていません。 ターゲット フレームワーク モニカー (TFM) は、.NET アプリまたはライブラリのターゲット フレームワークを指定するための標準化されたトークン形式です。 -| [対象とする Framework] | [最新バージョン] | ターゲット フレームワーク モニカー (TFM) | 実装されています。
.NET Standard バージョン | +| [対象とする Framework] | [最新バージョン] | ターゲット フレームワーク モニカー (TFM) | 実装済み
.NET Standard バージョン | | :-------------------: | :------------: | :----------------------------: | :-------------------------------------: | | .NET Standard | 2.0 | netstandard2.0 | N/A | | .NET Core アプリケーション | 2.0 | netcoreapp2.0 | 2.0 | diff --git a/docs/standard/garbage-collection/app-domain-resource-monitoring.md b/docs/standard/garbage-collection/app-domain-resource-monitoring.md index 474fcf928d3..9aeacf835c3 100644 --- a/docs/standard/garbage-collection/app-domain-resource-monitoring.md +++ b/docs/standard/garbage-collection/app-domain-resource-monitoring.md @@ -14,83 +14,86 @@ helpviewer_keywords: - memory use, monitoring - application domains, resource monitoring ms.assetid: 318bedf8-7f35-4f00-b34a-2b7b8e3fa315 -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 62a514f94857044af5020d36a1cfd6ce06741ac7 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 648f8b86ecf73a7da5f3f33d71fb8617bacccee1 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # アプリケーション ドメインのリソース監視 -アプリケーション ドメインのリソース監視 (ARM) では、ホスト アプリケーション ドメインによる CPU およびメモリの使用状況を監視できるようにします。 これは、ASP.NET などのホストの実行時間の長いプロセスで多数のアプリケーション ドメインを使用するのに役立ちます。 ホストに悪影響がのみ、プロセス全体のパフォーマンス問題のあるアプリケーションを特定できる場合、アプリケーションのアプリケーション ドメインをアンロードできます。 ARM では、このような意思決定を行う支援するために使用できる情報を提供します。 +アプリケーション ドメインのリソース監視 (ARM) を使用して、ホストでアプリケーション ドメインによる CPU とメモリの使用状況を監視できます。 これは、実行時間の長いプロセスで多数のアプリケーション ドメインを使用する ASP.NET などのホストに役立ちます。 問題のあるアプリケーションを特定できる場合に限り、ホストは、プロセス全体のパフォーマンスに悪影響を与えるアプリケーションのアプリケーション ドメインをアンロードできます。 ARM は、このような意思決定を支援するために使用できる情報を提供します。 - たとえば、ホスティング サービスには、ASP.NET サーバーで実行されている多くのアプリケーションがあります。 プロセスの 1 つのアプリケーションでは、大量のメモリやプロセッサ時間がかかりすぎる消費を開始、する場合は、ホスティング サービスは、問題の原因となっているアプリケーション ドメインを識別する ARM を使用できます。 + たとえば、ホスティング サービスでは、ASP.NET サーバー上で多くのアプリケーションが実行されている可能性があります。 プロセス内の 1 つのアプリケーションでメモリ消費量やプロセッサ時間が過度に増え始めた場合、ホスティング サービスは ARM を使用して問題の原因となっているアプリケーション ドメインを特定できます。 - ARM はライブ アプリケーションで使用する十分な軽量です。 For Windows (ETW) またはマネージまたはネイティブの Api を介して直接イベントのトレースを使用して、情報にアクセスすることができます。 + ARM は十分に軽量なので、ライブ アプリケーションで使用できます。 情報には、Windows (ETW) のイベント トレースを使用してアクセスするか、マネージ API またはネイティブ API を使用して直接アクセスできます。 -## リソースの監視を有効にします。 - ARM は、4 つの方法で有効にすることができます: 共通言語ランタイム (CLR) が開始されたときに、構成ファイルを指定すること、によってアンマネージを使用してホスト API、マネージ コードを使用して、または ARM ETW イベントを待機しています。 +## リソース監視を有効にする + ARM を有効にする方法は 4 つあります。共通言語ランタイム (CLR) の起動時に構成ファイルを提供する方法、アンマネージ ホスティング API を使用する方法、マネージ コードを使用する方法、または ARM ETW イベントをリッスンする方法です。 - ARM が有効になっていると、すぐには、プロセス内のすべてのアプリケーション ドメインでデータの収集を開始します。ARM が有効にする前に、アプリケーション ドメインが作成されている場合、アプリケーション ドメインが作成されたときではなく、ARM が有効にすると、累積的なデータが起動します。有効にすると、ARM を無効にすることはできません。 + ARM が有効になるとすぐに、プロセスのすべてのアプリケーション ドメイン上でデータの収集が開始されます。ARM が有効になる前にアプリケーション ドメインが作成された場合、アプリケーション ドメインの作成時ではなく、ARM が有効になったときに累積データが開始されます。ARM を有効にした後に無効にすることはできません。 -- 追加することによって CLR スタートアップ時 ARM を有効にすることができます、 [ \](../../../docs/framework/configure-apps/file-schema/runtime/appdomainresourcemonitoring-element.md)構成ファイル、および設定する要素、`enabled`属性を`true`です。 値`false`(既定) のみ ARM が起動時に無効になっている。 つまり、他のライセンス認証メカニズムのいずれかを使用して後でアクティブにできます。 +- CLR 起動時に ARM を有効にするには、[\](../../../docs/framework/configure-apps/file-schema/runtime/appdomainresourcemonitoring-element.md) 要素を構成ファイルに追加し、`enabled` 属性を `true` に設定します。 `false` の値 (既定) は、起動時に ARM は有効ではないことのみを意味します。他のアクティブ化メカニズムのいずれかを使用して、後で有効にすることができます。 -- ホストは、ARM を有効に要求することによって、 [ICLRAppDomainResourceMonitor](../../../docs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-interface.md)インターフェイスをホストします。 このインターフェイスは正常に取得した、ARM が有効になります。 +- ホストは、[ICLRAppDomainResourceMonitor](../../../docs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-interface.md) ホスティング インターフェイスを要求することで ARM を有効にすることができます。 このインターフェイスが正常に取得されると、ARM が有効になります。 -- マネージ コードは、ARM を有効にするには、静的 (`Shared` Visual Basic で)プロパティを`true`です。 プロパティを設定するとすぐには、ARM は有効です。 +- マネージ コードでは、static (Visual Basic では `Shared`) プロパティを `true` に設定して ARM を有効にすることができます。 プロパティが設定されるとすぐに、ARM が有効になります。 -- ETW イベントを待機して、起動後に ARM を有効にできます。 ARM が有効であり、パブリック プロバイダーを有効にすると、すべてのアプリケーション ドメイン イベントを発生させる開始`Microsoft-Windows-DotNETRuntime`を使用して、`AppDomainResourceManagementKeyword`キーワード。 アプリケーション ドメインとスレッドとデータを関連付ける、する必要がありますも有効にする、`Microsoft-Windows-DotNETRuntimeRundown`とプロバイダー、`ThreadingKeyword`キーワード。 +- 起動後に ETW イベントをリッスンして ARM を有効にすることができます。 `AppDomainResourceManagementKeyword` キーワードを使用してパブリック プロバイダー `Microsoft-Windows-DotNETRuntime` を有効にすると、ARM が有効になり、すべてのアプリケーション ドメインのイベント生成が開始されます。 データをアプリケーション ドメインとスレッドに関連付けるには、`ThreadingKeyword` キーワードを使用して `Microsoft-Windows-DotNETRuntimeRundown` プロバイダーを有効にする操作も必要です。 ## ARM の使用 - ARM では、アプリケーション ドメイン、およびメモリ使用量に関する情報の 3 つの種類によって使用されるプロセッサの合計時間を示します。 + ARM は、アプリケーション ドメインに使用される合計プロセッサ時間と、メモリ使用に関する 3 種類の情報を提供します。 -- **合計プロセッサ時間を秒単位で、アプリケーション ドメインの**: この時間がその有効期間中に、アプリケーション ドメインで実行に費やされたすべてのスレッドのオペレーティング システムにより報告されたスレッドの時間を加算して計算されます。 ブロックされているか、スリープ状態のスレッドがプロセッサ時間を使用しないでください。 スレッドは、ネイティブ コードを呼び出すの呼び出しが行われたアプリケーション ドメインの数に、スレッドがネイティブ コードに費やす時間が含まれます。 +- **アプリケーション ドメインの合計プロセッサ時間 (秒単位)**: アプリケーション ドメインの有効期間中に実行されていたすべてのスレッドについて、オペレーティング システムから報告されたスレッド時間を合計して計算されます。 ブロックされているスレッドまたはスリープ状態のスレッドは、プロセッサ時間を使用しません。 スレッドがネイティブ コードを呼び出すときに、スレッドがネイティブ コードに費やす時間は、呼び出しが行われたアプリケーション ドメインの計算に含まれます。 - - マネージ API:プロパティです。 + - マネージ API: プロパティ。 - - API をホスティング: [iclrappdomainresourcemonitor::getcurrentcputime](../../../docs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-getcurrentcputime-method.md)メソッドです。 + - ホスティング API: [ICLRAppDomainResourceMonitor::GetCurrentCpuTime](../../../docs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-getcurrentcputime-method.md) メソッド。 - - ETW イベント: `ThreadCreated`、 `ThreadAppDomainEnter`、および`ThreadTerminated`イベント。 プロバイダーとキーワードについてを参照してください「AppDomain リソース監視イベント」 [CLR ETW イベント](../../../docs/framework/performance/clr-etw-events.md)です。 + - ETW イベント: `ThreadCreated`、`ThreadAppDomainEnter`、および `ThreadTerminated` イベント プロバイダーとキーワードの詳細については、「[CLR ETW イベント](../../../docs/framework/performance/clr-etw-events.md)」の「AppDomain Resource Monitoring Events」(AppDomain リソース監視イベント) を参照してください。 -- **(バイト単位)、その有効期間中にアプリケーション ドメインによって行われたマネージの割り当ての合計**: 割り当ての合計は常に反映されておらず、アプリケーション ドメインによるメモリの使用割り当て済みオブジェクトの有効期間が短い可能性があるためです。 ただし、アプリケーションでは、割り当てし、大量のオブジェクトの解放する場合、割り当てのコストが大幅な可能性があります。 +- **有効期間中にアプリケーション ドメインによって行われたマネージされた割り当ての合計 (バイト単位)**: 割り当てられたオブジェクトの有効期間は短いことがあるので、割り当ての合計にアプリケーション ドメインによるメモリ使用量が反映されない場合もあります。 ただし、アプリケーションが膨大な数のオブジェクトを割り当ててから解放すると、割り当てのコストが大幅に高くなる可能性があります。 - - マネージ API:プロパティです。 + - マネージ API: プロパティ。 - - API をホスティング: [iclrappdomainresourcemonitor::getcurrentallocated](../../../docs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-getcurrentallocated-method.md)メソッドです。 + - ホスティング API: [ICLRAppDomainResourceMonitor::GetCurrentAllocated](../../../docs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-getcurrentallocated-method.md) メソッド。 - - ETW イベント:`AppDomainMemAllocated`イベント、`Allocated`フィールドです。 + - ETW イベント: `AppDomainMemAllocated` イベント、`Allocated` フィールド。 -- **マネージ メモリ、(バイト単位) は、アプリケーション ドメインによって参照されると、最新の完全なブロッキング コレクションで残ったを**: この値は正確な後にのみフル ブロッキング コレクション。 (これは、バック グラウンドで発生して、アプリケーションをブロックしませんが、同時実行のガベージ コレクションとは対照的です。)たとえば、メソッドのオーバー ロードがフル ブロッキング コレクションが発生します。 +- **アプリケーション ドメインによって参照され、最新の完全なブロッキング コレクションの後に残っているマネージ メモリ (バイト単位)**: この数値は完全なブロッキング コレクションの後にのみ正確になります (これは、バックグラウンドで発生し、アプリケーションをブロックしない同時コレクションとは対照的です)。たとえば、 メソッドのオーバーロードによって、完全なブロッキング コレクションが実行されます。 - - マネージ API:プロパティです。 + - マネージ API: プロパティ。 - - API をホスティング: [iclrappdomainresourcemonitor::getcurrentsurvived](../../../docs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-getcurrentsurvived-method.md)メソッド、`pAppDomainBytesSurvived`パラメーター。 + - ホスティング API: [ICLRAppDomainResourceMonitor::GetCurrentSurvived](../../../docs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-getcurrentsurvived-method.md) メソッド、`pAppDomainBytesSurvived` パラメーター。 - - ETW イベント:`AppDomainMemSurvived`イベント、`Survived`フィールドです。 + - ETW イベント: `AppDomainMemSurvived` イベント、`Survived` フィールド。 -- **マネージ メモリ合計、(バイト単位) は、プロセスによって参照されると、最新の完全なブロッキング コレクションで残ったを**: この番号に個々 のアプリケーション ドメインの残ったメモリを比較することができます。 +- **プロセスによって参照され、最新の完全なブロッキング コレクションの後に残っている合計マネージ メモリ (バイト単位)**: 個々のアプリケーション ドメインに残っている​​メモリをこの数値と比較できます。 - - マネージ API:プロパティです。 + - マネージ API: プロパティ。 - - API をホスティング: [iclrappdomainresourcemonitor::getcurrentsurvived](../../../docs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-getcurrentsurvived-method.md)メソッド、`pTotalBytesSurvived`パラメーター。 + - ホスティング API: [ICLRAppDomainResourceMonitor::GetCurrentSurvived](../../../docs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-getcurrentsurvived-method.md) メソッド、`pTotalBytesSurvived` パラメーター。 - - ETW イベント:`AppDomainMemSurvived`イベント、`ProcessSurvived`フィールドです。 + - ETW イベント: `AppDomainMemSurvived` イベント、`ProcessSurvived` フィールド。 -### 完全なときに決定する、ブロッキング コレクションが発生しました。 - 残ったメモリの数が正確な場合を判断するのにフル ブロッキング コレクションが発生したときを把握する必要があります。 これを行うためのメソッドは、ARM 統計情報を確認するを使用する API に依存します。 +### 完全なブロッキング コレクションが発生したときの判断 + 残っているメモリの計算が正確かどうかを判断するには、完全なブロッキング コレクションがいつ発生したかを把握する必要があります。 これを行う方法は、ARM 統計を調べるために使用する API によって異なります。 #### マネージ API - プロパティを使用する場合、クラスを使用することができます、すべてのコレクションの通知を登録します。 コレクションのアプローチではなく、コレクションの完了を待機しているために、使用するしきい値は、重要ではありません。 呼び出すことができますし、メソッドで、完全なコレクションが完了するまでブロックします。 ループ内でメソッドを呼び出し、メソッドが返すときに必要な分析がスレッドを作成できます。 + クラスのプロパティを使用する場合は、 メソッドを使用して完全なコレクションの通知を登録できます。 コレクションのアプローチではなく、コレクションの完了を待機するので、使用するしきい値は重要ではありません。 次に、 メソッドを呼び出すことができます。このメソッドは、完全なコレクションが完了するまでブロックされます。 ループ内でメソッドを呼び出し、メソッドから復帰するたびに必要な分析を実行するスレッドを作成できます。 - 代わりに、呼び出すことができます、メソッドを定期的にジェネレーション 2 のコレクションの数が増えたかどうかを参照してください。 ポーリング頻度に応じてこの手法可能性がありますに渡さないほど正確で完全なコレクションの発生を示す値。 + また、 メソッドを定期的に呼び出して、世代 2 コレクションの数が増加しているかどうかを確認することもできます。 ポーリング頻度によっては、この手法では完全なコレクションの発生が正確に示されない場合があります。 -#### ホスト API - ホストは、CLR の実装を渡す必要があります、アンマネージ ホスト API を使用する場合、 [IHostGCManager](../../../docs/framework/unmanaged-api/hosting/ihostgcmanager-interface.md)インターフェイスです。 CLR の呼び出し、 [ihostgcmanager::suspensionending](../../../docs/framework/unmanaged-api/hosting/ihostgcmanager-suspensionending-method.md)メソッドのコレクションが発生したときに中断されているスレッドの実行を再開するときにします。 CLR は、ホストは、コレクションが完全または部分的なであるかどうかを特定できるように、メソッドのパラメーターとして完了したコレクションの生成を渡します。 実装、 [ihostgcmanager::suspensionending](../../../docs/framework/unmanaged-api/hosting/ihostgcmanager-suspensionending-method.md)カウントが更新されるとすぐに取得ことを確認の残ったメモリ メソッドを照会できます。 +#### ホスティング API + アンマネージ ホスティング API を使用する場合、ホストは CLR に [IHostGCManager](../../../docs/framework/unmanaged-api/hosting/ihostgcmanager-interface.md) インターフェイスの実装を渡す必要があります。 コレクションの実行中に中断されたスレッドの実行を再開すると、CLR は [IHostGCManager::SuspensionEnding](../../../docs/framework/unmanaged-api/hosting/ihostgcmanager-suspensionending-method.md) メソッドを呼び出します。 CLR は、完全なコレクションの生成をメソッドのパラメーターとして渡します。そのため、ホストはコレクションが完全か部分的かを判断できます。 [IHostGCManager::SuspensionEnding](../../../docs/framework/unmanaged-api/hosting/ihostgcmanager-suspensionending-method.md) メソッドを実装すると、残っているメモリのクエリを実行して、カウントが更新された場合にすぐに取得することができます。 -## 関連項目 +## 参照 [ICLRAppDomainResourceMonitor インターフェイス](../../../docs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-interface.md) [\](../../../docs/framework/configure-apps/file-schema/runtime/appdomainresourcemonitoring-element.md) diff --git a/docs/standard/garbage-collection/fundamentals.md b/docs/standard/garbage-collection/fundamentals.md index 0d5c4e99de8..a4ecd83c1a9 100644 --- a/docs/standard/garbage-collection/fundamentals.md +++ b/docs/standard/garbage-collection/fundamentals.md @@ -16,15 +16,18 @@ helpviewer_keywords: - garbage collection, workstation garbage collection - garbage collection, managed heap ms.assetid: 67c5a20d-1be1-4ea7-8a9a-92b0b08658d2 -caps.latest.revision: "51" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: b15ae041cdadb259c59d447b8775844fc96048be -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 9a42c9aeb3295cd90fb6796e36b840daff843aac +ms.sourcegitcommit: 91691981897cf8451033cb01071d8f5d94017f97 ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/09/2018 --- # ガベージ コレクションの基礎 共通言語ランタイム (CLR) では、自動メモリ マネージャーとしてガベージ コレクターを使用できます。 次のような利点があります。 @@ -79,7 +82,7 @@ ms.lasthandoff: 10/18/2017 - コミット済み。 物理ストレージに割り当てられたメモリ ブロックです。 -- 仮想アドレス空間は、断片化することがあります。 断片化とは、アドレス空間に複数の空きブロック (ホールとも呼ばれます) がある状態です。 仮想メモリの割り当てが要求された場合、仮想メモリ マネージャーは、その割り当て要求を満たすのに十分な大きさの単一の空きブロックを見つけなければなりません。 場合でも、2 GB の空き領域がある場合は、2 GB を必要とする割り当てされません成功した 1 つのアドレス ブロックにない限り、そのすべての空き領域。 +- 仮想アドレス空間は、断片化することがあります。 断片化とは、アドレス空間に複数の空きブロック (ホールとも呼ばれます) がある状態です。 仮想メモリの割り当てが要求された場合、仮想メモリ マネージャーは、その割り当て要求を満たすのに十分な大きさの単一の空きブロックを見つけなければなりません。 2 GB の空き領域があっても、そのすべての空き領域が 1 つのアドレス ブロックの中にない場合、2 GB の領域を必要とする割り当ては失敗します。 - メモリが足りなくなるのは、予約する仮想アドレス空間が足りなくなった場合か、コミットする物理領域が足りなくなった場合です。 @@ -91,7 +94,7 @@ ms.lasthandoff: 10/18/2017 ## ガベージ コレクションの条件 ガベージ コレクションは、次のいずれかの条件に当てはまる場合に発生します。 -- システムの物理メモリが少ない場合。 これは、OS からいずれか、メモリ不足の通知またはホストによって示されるメモリの不足によって検出されました。 +- システムの物理メモリが少ない場合。 OS からのメモリ不足通知またはホストによって示されたメモリ不足のいずれかによって検出されます。 - マネージ ヒープで割り当てられたオブジェクトによって使用されているメモリが、許容されるしきい値を超える場合。 このしきい値は、プロセスの進行に合わせて絶えず調整されます。 @@ -105,7 +108,7 @@ ms.lasthandoff: 10/18/2017 マネージ ヒープはマネージ プロセスごとに割り当てられます。 プロセス内のすべてのスレッドは、同じヒープにオブジェクト用のメモリを割り当てます。 - メモリを予約するために、ガベージ コレクターは Win32 [VirtualAlloc](http://go.microsoft.com/fwlink/?LinkId=179047) 関数を呼び出し、マネージ アプリケーション用のメモリのセグメントを一度に 1 つずつ予約します。 また、ガベージ コレクターは、必要に応じてセグメントを予約したり、Win32 [VirtualFree](http://go.microsoft.com/fwlink/?LinkId=179050) 関数を呼び出すことで (オブジェクトのセグメントをクリアしてから) セグメントを解放してオペレーティング システムに戻したりします。 + メモリを予約するために、ガベージ コレクターは Win32 [VirtualAlloc](https://msdn.microsoft.com/library/aa366887.aspx) 関数を呼び出し、マネージ アプリケーション用のメモリのセグメントを一度に 1 つずつ予約します。 また、ガベージ コレクターは、必要に応じてセグメントを予約したり、Win32 [VirtualFree](https://msdn.microsoft.com/library/aa366892.aspx) 関数を呼び出すことで (オブジェクトのセグメントをクリアしてから) セグメントを解放してオペレーティング システムに戻したりします。 > [!IMPORTANT] > ガベージ コレクターによって割り当てらるセグメントのサイズは実装に固有であり、定期的な更新プログラムによる場合を含め、いつでも変更されることがあります。 アプリでは、セグメント サイズを推測することや、特定のセグメント サイズに依存することを絶対に避けてください。また、セグメントの割り当てに使用可能なメモリの量を構成しようとしてもなりません。 @@ -189,7 +192,7 @@ ms.lasthandoff: 10/18/2017 次の図は、ガベージ コレクションを発生させて他のスレッドの中断を引き起こすスレッドを示しています。 - ![スレッドがガベージ コレクションを発生させる](../../../docs/standard/garbage-collection/media/gc-triggered.png "GC_Triggered") + ![スレッドがガベージ コレクションを発生させる場合](../../../docs/standard/garbage-collection/media/gc-triggered.png "GC_Triggered") ガベージ コレクションを発生させるスレッド [ページのトップへ](#top) @@ -208,7 +211,7 @@ ms.lasthandoff: 10/18/2017 ## ワークステーションとサーバーのガベージ コレクション ガベージ コレクターは、さまざまなシナリオに対応できるように自動的に調整されます。 構成ファイルの設定を使って、作業負荷の特性に基づいてガベージ コレクションの種類を設定できます。 CLR には、次の種類のガベージ コレクションが用意されています。 -- ワークステーションのガベージ コレクション。すべてのクライアント ワークステーションとスタンドアロンの PC を対象としたオプションです。 これは、既定の設定、 [ \ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md)ランタイム構成スキーマでします。 +- ワークステーションのガベージ コレクション。すべてのクライアント ワークステーションとスタンドアロンの PC を対象としたオプションです。 これは、ランタイム構成スキーマの [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md)の既定の設定です。 ワークステーションのガベージ コレクションは、同時実行または非同時実行のどちらかで実行できます。 同時実行ガベージ コレクションでは、ガベージ コレクションの実行中にマネージ スレッドの操作を続けることができます。 @@ -218,13 +221,13 @@ ms.lasthandoff: 10/18/2017 次の図は、サーバー上でガベージ コレクションを実行する専用のスレッドを示しています。 - ![サーバーのガベージ コレクション スレッド](../../../docs/standard/garbage-collection/media/gc-server.png "GC_Server") + ![サーバー ガベージ コレクション スレッド](../../../docs/standard/garbage-collection/media/gc-server.png "GC_Server") サーバー ガベージ コレクション ### ガベージ コレクションの構成 - 使用することができます、 [ \ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md)CLR で実行する場合、ランタイム構成スキーマのガベージ コレクションの種類を指定します。 この要素の `enabled` 属性が `false` (既定値) に設定されている場合、ワークステーションのガベージ コレクションが実行されます。 `enabled` 属性を `true`に設定すると、サーバーのガベージ コレクションが実行されます。 + ランタイム構成スキーマの [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md)を使用して、CLR で実行するガベージ コレクションの種類を指定できます。 この要素の `enabled` 属性が `false` (既定値) に設定されている場合、ワークステーションのガベージ コレクションが実行されます。 `enabled` 属性を `true`に設定すると、サーバーのガベージ コレクションが実行されます。 - 同時実行ガベージ コレクションを指定した、 [ \ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)ランタイム構成スキーマのです。 既定値は `enabled`です。 この設定は、同時実行ガベージ コレクションとバックグラウンド ガベージ コレクションの両方を制御します。 + 同時実行ガベージ コレクションは、ランタイム構成スキーマの [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)を使用して指定します。 既定値は `enabled`です。 この設定は、同時実行ガベージ コレクションとバックグラウンド ガベージ コレクションの両方を制御します。 サーバーのガベージ コレクションは、アンマネージ ホスト インターフェイスを使用して指定することもできます。 ASP.NET および SQL Server では、アプリケーションがそのいずれかの環境内でホストされている場合、自動的にサーバーのガベージ コレクションが有効になることに注意してください。 @@ -235,7 +238,7 @@ ms.lasthandoff: 10/18/2017 ネイティブ コードを実行しているスレッドは中断されません。 -- 関係なく 1 つのみのプロセッサをあるコンピューター上で常にワークステーションのガベージ コレクションを使用、 [ \](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md)設定します。 サーバーのガベージ コレクションを指定した場合、CLR は、同時実行を無効にしてワークステーションのガベージ コレクションを使用します。 +- プロセッサが 1 つしかないコンピューターでは、[\](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md) の設定に関係なく、常にワークステーションのガベージ コレクションが使用されます。 サーバーのガベージ コレクションを指定した場合、CLR は、同時実行を無効にしてワークステーションのガベージ コレクションを使用します。 サーバーのガベージ コレクションにおける、スレッド処理とパフォーマンスについての注意点を次に示します。 @@ -259,7 +262,7 @@ ms.lasthandoff: 10/18/2017 同時実行ガベージ コレクションでは、コレクションの一時停止を最小限にすることで、インタラクティブ アプリケーションの応答性を高めることができます。 マネージ スレッドは、同時実行ガベージ コレクションのスレッドが実行されている間も、ほぼ常に処理を続けることができます。 そのため、ガベージ コレクションの実行中の一時停止が短くなります。 - 複数のプロセスを実行している場合にパフォーマンスを向上させるには、同時実行ガベージ コレクションを無効にします。 追加することでこれを行う、 [ \ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)アプリの構成ファイルと設定の値をその`enabled`属性を`"false"`です。 + 複数のプロセスを実行している場合にパフォーマンスを向上させるには、同時実行ガベージ コレクションを無効にします。 [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)をアプリの構成ファイルに追加し、`enabled` 属性の値を `"false"` に設定することで、これを行うことができます。 同時実行ガベージ コレクションは、専用のスレッドで実行されます。 既定では、CLR は、同時実行ガベージ コレクションを有効にしてワークステーションのガベージ コレクションを実行します。 これは、シングルプロセッサのコンピューターでもマルチプロセッサのコンピューターでも同じです。 @@ -269,7 +272,7 @@ ms.lasthandoff: 10/18/2017 次の図は、別々の専用のスレッドで実行される同時実行ガベージ コレクションを示しています。 - ![同時実行ガベージ コレクション スレッド](../../../docs/standard/garbage-collection/media/gc-concurrent.png "GC_Concurrent") + ![同時実行ガベージ コレクションのスレッド](../../../docs/standard/garbage-collection/media/gc-concurrent.png "GC_Concurrent") 同時実行ガベージ コレクション [ページのトップへ](#top) @@ -289,19 +292,19 @@ ms.lasthandoff: 10/18/2017 次の図は、ワークステーション上の別々の専用スレッドで実行されるバックグラウンド ガベージ コレクションを示しています。 - ![バック グラウンド ワークステーション ガベージ コレクション](../../../docs/standard/garbage-collection/media/backgroundworkstn.png "BackgroundWorkstn") + ![バックグラウンド ワークステーション ガベージ コレクション](../../../docs/standard/garbage-collection/media/backgroundworkstn.png "BackgroundWorkstn") バックグラウンド ワークステーション ガベージ コレクション [ページのトップへ](#top) ## バックグラウンド サーバー ガベージ コレクション - .NET Framework 4.5 以降では、サーバーのバックグラウンド ガベージ コレクションは、サーバーのガベージ コレクションの既定のモードです。 このモードを選択するには設定、`enabled`の属性、 [ \ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md)に`true`ランタイム構成スキーマでします。 このモードは、前のセクションで説明したワークステーションのバックグラウンド ガベージ コレクションと同様に機能しますが、いくつかの違いがあります。 ワークステーションのバックグラウンド ガベージ コレクションでは専用のバックグラウンド ガベージ コレクション スレッドを 1 つ使用します。これに対して、サーバーのバックグラウンド ガベージ コレクションでは複数のスレッドを使用し、通常、論理プロセッサごとに専用のスレッドが使用されます。 ワークステーションのバックグラウンド ガベージ コレクション スレッドとは異なり、これらのスレッドはタイムアウトになりません。 + .NET Framework 4.5 以降では、サーバーのバックグラウンド ガベージ コレクションは、サーバーのガベージ コレクションの既定のモードです。 このモードを選択するには、ランタイム構成スキーマで [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md)の `enabled` 属性を `true` に設定します。 このモードは、前のセクションで説明したワークステーションのバックグラウンド ガベージ コレクションと同様に機能しますが、いくつかの違いがあります。 ワークステーションのバックグラウンド ガベージ コレクションでは専用のバックグラウンド ガベージ コレクション スレッドを 1 つ使用します。これに対して、サーバーのバックグラウンド ガベージ コレクションでは複数のスレッドを使用し、通常、論理プロセッサごとに専用のスレッドが使用されます。 ワークステーションのバックグラウンド ガベージ コレクション スレッドとは異なり、これらのスレッドはタイムアウトになりません。 次の図は、サーバー上の別々の専用スレッドで実行されるバックグラウンド ガベージ コレクションを示しています。 - ![バック グラウンド サーバー ガベージ コレクション](../../../docs/standard/garbage-collection/media/backgroundserver.png "BackgroundServer") + ![バックグラウンド サーバー ガベージ コレクション](../../../docs/standard/garbage-collection/media/backgroundserver.png "BackgroundServer") バックグラウンド サーバー ガベージ コレクション -## 関連項目 +## 参照 [ガベージ コレクション](../../../docs/standard/garbage-collection/index.md) diff --git a/docs/standard/garbage-collection/gc.md b/docs/standard/garbage-collection/gc.md index 6b31762e67a..b37599deff2 100644 --- a/docs/standard/garbage-collection/gc.md +++ b/docs/standard/garbage-collection/gc.md @@ -1,6 +1,6 @@ --- title: "自動メモリ管理とガベージ コレクション" -description: "自動メモリ管理、共通言語ランタイムがマネージ実行時に提供するサービスのいずれかを説明します。" +description: "マネージ実行中に共通言語ランタイムが提供するサービスの 1 つである自動メモリ管理について説明します。" keywords: .NET, .NET Core author: dotnet-bot ms.author: dotnetcontent @@ -10,11 +10,14 @@ ms.prod: .net ms.technology: dotnet-standard ms.devlang: dotnet ms.assetid: d095b0b6-2454-4e23-80b4-c9e8a447116c -ms.openlocfilehash: 30bcf08ebb4e05706d5b25e2f805474dd1ee428e -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a99d849cc1092e36181da7b7ab767a41ff5ef234 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 自動メモリ管理とガベージ コレクション @@ -50,7 +53,7 @@ ms.lasthandoff: 10/18/2017 アプリケーションで作成されるオブジェクトの大部分については、ガベージ コレクターによって、必要なメモリ管理タスクを自動的に実行できます。 しかし、アンマネージ リソースでは、明示的なクリーンアップが必要です。 最も一般的な種類のアンマネージ リソースは、ファイル ハンドル、ウィンドウ ハンドル、ネットワーク接続などのオペレーティング システム リソースをラップしたオブジェクトです。 ガベージ コレクターは、アンマネージ リソースをカプセル化したマネージ オブジェクトの存続期間を追跡することはできますが、そのアンマネージ リソースのクリーンアップ方法については具体的な情報を持っていません。 アンマネージ リソースをカプセル化するオブジェクトを作成する場合は、そのアンマネージ リソースをクリーンアップするために必要なコードをパブリックな `Dispose` メソッドという形で提供することをお勧めします。 `Dispose` メソッドを提供すると、ユーザーがオブジェクトを使い終わったときに、そのオブジェクトのメモリを明示的に解放できます。 アンマネージ リソースをカプセル化するオブジェクトを使用する場合は、`Dispose` メソッドの存在を念頭に置き、必要に応じて呼び出すようにしてください。 アンマネージ リソースのクリーンアップの詳細と、`Dispose` を実装するためのデザイン パターンの例については、「[.NET のガベージ コレクション](index.md)」を参照してください。 -## 関連項目 +## 参照 [System.GC](xref:System.GC) diff --git a/docs/standard/garbage-collection/implementing-dispose.md b/docs/standard/garbage-collection/implementing-dispose.md index 22a3b6ca4c4..9e0eafabad4 100644 --- a/docs/standard/garbage-collection/implementing-dispose.md +++ b/docs/standard/garbage-collection/implementing-dispose.md @@ -15,28 +15,31 @@ helpviewer_keywords: - Dispose method - garbage collection, Dispose method ms.assetid: eb4e1af0-3b48-4fbc-ad4e-fc2f64138bf9 -caps.latest.revision: "44" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: b5a304c48a953b172cbcc3aa1c717a660298d36a -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 404fdece284accf305ef3cf2324be2e37a8da4b6 +ms.sourcegitcommit: bf8a3ba647252010bdce86dd914ac6c61b5ba89d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/06/2018 --- # Dispose メソッドの実装 -実装する、をアプリケーションで使用されているアンマネージ リソースを解放するメソッド。 .NET のガベージ コレクターは、アンマネージ メモリの割り当てや解放を行いません。 +アプリケーションによって使用されるアンマネージ リソースを解放するための メソッドを実装します。 .NET のガベージ コレクターは、アンマネージ メモリの割り当てや解放を行いません。 -呼ばれる、オブジェクトを破棄するパターン、 [dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md)オブジェクトの有効期間に順番が付けられます。 Dispose パターンは、ファイルおよびパイプ ハンドル、レジストリ ハンドル、待機ハンドル、アンマネージ メモリ ブロックのポインターなど、アンマネージ リソースにアクセスするオブジェクトでのみ使用されます。 これは、使用されていないマネージ オブジェクトの解放にはガベージ コレクターが非常に有効ですが、アンマネージ オブジェクトは解放できないためです。 +[Dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md)と呼ばれる、オブジェクトを破棄するパターンによって、オブジェクトの有効期間に順番が付けられます。 Dispose パターンは、ファイルおよびパイプ ハンドル、レジストリ ハンドル、待機ハンドル、アンマネージ メモリ ブロックのポインターなど、アンマネージ リソースにアクセスするオブジェクトでのみ使用されます。 これは、使用されていないマネージ オブジェクトの解放にはガベージ コレクターが非常に有効ですが、アンマネージ オブジェクトは解放できないためです。 Dispose パターンには 2 種類あります。 * 型で使用する各アンマネージ リソースをセーフ ハンドル (つまり、 から派生したクラス) でラップします。 この場合、 インターフェイスと追加の `Dispose(Boolean)` メソッドを実装します。 これは推奨される方法で、 メソッドをオーバーライドする必要がありません。 > [!NOTE] - > 名前空間から派生したクラスのセットを提供するに記載されている、[セーフ ハンドルを使用して](#SafeHandles)セクションです。 アンマネージ リソースを解放できるクラスが見つからない場合は、 の独自のサブクラスを実装できます。 + > 名前空間には から派生した一連のクラスが用意されています。これらのクラスの一覧については、「[セーフ ハンドルの使用](#SafeHandles)」を参照してください。 アンマネージ リソースを解放できるクラスが見つからない場合は、 の独自のサブクラスを実装できます。 * インターフェイスと追加の `Dispose(Boolean)` メソッドを実装し、 メソッドもオーバーライドします。 の実装が型のコンシューマーによって呼び出されなかった場合にアンマネージ リソースが破棄されるように、 をオーバーライドする必要があります。 前の項目で説明された推奨される方法を使用すると、 クラスが代わりにこれを実行します。 @@ -67,7 +70,7 @@ Dispose パターンには 2 種類あります。 ### Dispose(Boolean) オーバーロード -2 番目のオーバー ロードで、 *disposing*パラメーターは、メソッドの呼び出し元となるかどうかを示す、メソッド (その値は`true`) それともファイナライザーか (その値は`false`)。 +2 番目のオーバーロードでは、*disposing* パラメーターは で、メソッドの呼び出し元が メソッドか (値は `true`)、それともファイナライザーか (値は `false`) を示します。 メソッドの本体は 2 つのコード ブロックで構成されます。 @@ -75,7 +78,7 @@ Dispose パターンには 2 種類あります。 * マネージ リソースを解放する条件付きブロック。 このブロックは、`disposing` の値が `true` の場合に実行されます。 解放するマネージ リソースには、次のオブジェクトを含めることができます。 - **実装するマネージ オブジェクトです。** 条件付きブロックを使用して の実装を呼び出すことができます。 セーフ ハンドルを使用してアンマネージ リソースをラップしている場合は、ここで の実装を呼び出す必要があります。 + ** を実装するマネージ オブジェクト。** 条件付きブロックを使用して の実装を呼び出すことができます。 セーフ ハンドルを使用してアンマネージ リソースをラップしている場合は、ここで の実装を呼び出す必要があります。 **大量のメモリを消費するか、不足しているリソースを消費するマネージ オブジェクト。** これらのオブジェクトを `Dispose` メソッドで明示的に解放すると、ガベージ コレクターによって非確定的に解放される場合よりも迅速に解放されます。 @@ -108,13 +111,13 @@ Dispose パターンには 2 種類あります。 [!code-vb[System.IDisposable#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.idisposable/vb/base2.vb#5)] > [!NOTE] -> オーバーライドする (C#)、定義することによって、[デストラクター](~/docs/csharp/programming-guide/classes-and-structs/destructors.md)です。 +> C# では、[デストラクター](~/docs/csharp/programming-guide/classes-and-structs/destructors.md)を定義することによって、 をオーバーライドします。 ## 派生クラスでの Dispose パターンの実装 インターフェイスを実装するクラスから派生したクラスは、 の基底クラスでの実装が派生クラスに継承されるため、 を実装しないでください。 代わりに、派生クラスで Dispose パターンを実装するには、以下の項目を用意します。 -* 基底クラスのメソッドをオーバーライドして、派生クラスのリソースを解放する実際の作業を実行する `protected``Dispose(Boolean)` メソッド。 このメソッドは、基底クラスの `Dispose(Boolean)` メソッドも呼び出して、それに *disposing* 引数の値として `true` を渡す必要があります。 +* 基底クラスのメソッドをオーバーライドして、派生クラスのリソースを解放する実際の作業を実行する `protected Dispose(Boolean)` メソッド。 このメソッドは、基底クラスの `Dispose(Boolean)` メソッドも呼び出して、それに *disposing* 引数の値として `true` を渡す必要があります。 * アンマネージ リソースをラップする から派生したクラス (推奨)、または、 メソッドのオーバーライド。 クラスには、コーディングが不要なファイナライザーが用意されています。 ファイナライザーを用意する場合は、*disposing* 引数を `false` として `Dispose(Boolean)` オーバーロードを呼び出す必要があります。 @@ -132,7 +135,7 @@ Dispose パターンには 2 種類あります。 [!code-vb[System.IDisposable#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.idisposable/vb/derived2.vb#6)] > [!NOTE] -> オーバーライドする (C#)、定義することによって、[デストラクター](~/docs/csharp/programming-guide/classes-and-structs/destructors.md)です。 +> C# では、[デストラクター](~/docs/csharp/programming-guide/classes-and-structs/destructors.md)を定義することによって、 をオーバーライドします。 ## セーフ ハンドルの使用 @@ -175,5 +178,5 @@ Dispose パターンには 2 種類あります。 -[方法: を定義およびクラスと構造体を使用 (C + + CLI)](/cpp/dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli) +[方法: クラスと構造体を定義および使用する (C++/CLI)](/cpp/dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli) [Dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md) diff --git a/docs/standard/garbage-collection/induced.md b/docs/standard/garbage-collection/induced.md index dc4a82c0bf5..80c9e59504d 100644 --- a/docs/standard/garbage-collection/induced.md +++ b/docs/standard/garbage-collection/induced.md @@ -8,17 +8,21 @@ ms.suite: ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article -helpviewer_keywords: garbage collection, forced +helpviewer_keywords: +- garbage collection, forced ms.assetid: 019008fe-4708-4e65-bebf-04fd9941e149 -caps.latest.revision: "20" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 92918e347b10dfcf3a0d6e2c08cec8c7a6963f5b -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 6c3093a14fe5186df086cb5b63d20a7eb309c7ba +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 発生したコレクション ほとんどの場合、コレクションの実行に最適なタイミングはガベージ コレクターが判断できるので、ガベージ コレクターに任せるのが良い方法です。 ただし、ごくまれに、強制的にコレクションを実行するとアプリケーションのパフォーマンスが向上する場合があります。 このような場合は、 メソッドを使用してガベージ コレクションを強制的に実行できます。 @@ -42,6 +46,6 @@ ms.lasthandoff: 11/21/2017 | または |ブロッキング コレクションはできるだけ早く実行されます。 バックグラウンド コレクションが実行中でジェネレーションが 0 または 1 の場合、 メソッドは直ちにブロッキング コレクションをトリガーし、コレクションが終了すると制御を戻します。 バックグラウンド コレクションが実行中で `generation` パラメーターが 2 の場合、メソッドはバックグラウンド コレクションの終了を待機し、ジェネレーション 2 のブロッキング コレクションをトリガーして、制御を戻します。|コレクションはできるだけ早く実行されます。 メソッドはバックグラウンド コレクションを要求しますが、それは保証されず、状況によってはブロッキング コレクションが実行される場合もあります。 バックグラウンド コレクションが既に実行中の場合、メソッドはすぐに制御を返します。| ||ガベージ コレクターおよび `generation` パラメーターの状態によっては、ブロッキング コレクションが実行される場合があります。 ガベージ コレクターは最適なパフォーマンスを提供しようとします。|ガベージ コレクターの状態によっては、コレクションが実行される場合があります。 メソッドはバックグラウンド コレクションを要求しますが、それは保証されず、状況によってはブロッキング コレクションが実行される場合もあります。 ガベージ コレクターは最適なパフォーマンスを提供しようとします。 バックグラウンド コレクションが既に実行中の場合、メソッドはすぐに制御を返します。| -## 関連項目 +## 参照 [待機モード](../../../docs/standard/garbage-collection/latency.md) [ガベージ コレクション](../../../docs/standard/garbage-collection/index.md) diff --git a/docs/standard/garbage-collection/memory-management-and-gc.md b/docs/standard/garbage-collection/memory-management-and-gc.md index abae933d3bd..9c5bf618d38 100644 --- a/docs/standard/garbage-collection/memory-management-and-gc.md +++ b/docs/standard/garbage-collection/memory-management-and-gc.md @@ -13,25 +13,28 @@ helpviewer_keywords: - memory management [.NET Framework] - garbage collection [.NET Framework profiling] ms.assetid: fd0462f7-57ad-4858-bf62-958378873602 -caps.latest.revision: "6" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: d2b9d0f8d4b09e4f95fe33134e900612c59534fb -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 0a9d1f2a7ad3432667cdb5ed9223cbabf4089597 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- -# メモリ管理と .NET のガベージ コレクション -ドキュメントのこのセクションでは、.NET のメモリの管理に関する情報を提供します。 +# .NET のメモリ管理とガベージ コレクション +このセクションでは、.NET でのメモリの管理について説明します。 ## このセクションの内容 [アンマネージ リソースのクリーンアップ](../../../docs/standard/garbage-collection/unmanaged.md) アンマネージ リソースの適切な管理とクリーンアップの方法について説明します。 [ガベージ コレクション](../../../docs/standard/garbage-collection/index.md) - .NET ガベージ コレクターに関する情報を提供します。 + .NET のガベージ コレクターについて説明します。 ## 関連項目 [開発ガイド](../../../docs/framework/development-guide.md) diff --git a/docs/standard/garbage-collection/optimization-for-shared-web-hosting.md b/docs/standard/garbage-collection/optimization-for-shared-web-hosting.md index bba50951676..b3c01fbfe56 100644 --- a/docs/standard/garbage-collection/optimization-for-shared-web-hosting.md +++ b/docs/standard/garbage-collection/optimization-for-shared-web-hosting.md @@ -13,32 +13,35 @@ helpviewer_keywords: - garbage collection, optimizing - garbage collection, shared Web hosting ms.assetid: be98c0ab-7ef8-409f-8a0d-cb6e5b75ff20 -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 1f423d867d4fada075800650627c94f9d09e9e7a -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 7525ca263449da77b4b6364fd6bcfd51dcba145d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 共有 Web ホストの最適化 -複数の小規模 Web サイトをホストすることにより共有されているサーバーの管理者がいる場合は、パフォーマンスを最適化し、次を追加することによってサイト容量を増やす`gcTrimCommitOnLowMemory`設定、 `runtime` .net Aspnet.config ファイル内のノードディレクトリ: +複数の小規模な Web サイトをホストして共有されているサーバーの管理者は、.NET ディレクトリの Aspnet.config ファイルの `runtime` ノードに次の `gcTrimCommitOnLowMemory` 設定を追加することで、パフォーマンスを最適化し、サイトの容量を増やすことができます。 `` > [!NOTE] -> この設定は推奨のみ共有 Web をホスティングのシナリオです。 +> この設定は、共有 Web ホスティング シナリオの場合にのみお勧めします。 - ガベージ コレクターは、将来の割り当て用のメモリを保持しているためにより厳密に必要なものをコミットされた領域にできます。 時刻を格納するには、この領域を減らすことができますが、システム メモリの負荷が高い場合。 このコミットされた領域を減らすことにより、パフォーマンスが向上しより多くのサイトをホストする能力を展開します。 + ガベージ コレクターは将来の割り当てのためにメモリを保持するので、コミットされる領域は厳密に必要な領域を超える可能性があります。 この領域を減らすと、システム メモリにかかる負荷が高くなる時間に対応できます。 このコミットされる領域を減らすと、パフォーマンスが向上し、より多くのサイトをホストできるようになります。 - ときに、`gcTrimCommitOnLowMemory`設定が有効になっていると、ガベージ コレクターは、システム メモリの負荷を評価し、負荷が 90% に達すると、トリミング モードに入ります。 負荷が 85% を未満になるまで、トリミング モードが維持されます。 + `gcTrimCommitOnLowMemory` 設定が有効な場合、ガベージ コレクターはシステムのメモリ負荷を評価し、負荷が 90% に達するとトリミング モードに切り替わります。 負荷が 85% 未満になるまでトリミング モードは維持されます。 - 条件は次の許可、ガベージ コレクター場合ことができますを`gcTrimCommitOnLowMemory`設定されず、現在のアプリケーションのヘルプ、それを無視します。 + 条件を満たしている場合、`gcTrimCommitOnLowMemory` 設定で現在のアプリケーションを助けずに無視することをガベージ コレクターで決定することができます。 ## 例 - 次の XML フラグメントが有効にする方法を示しています、`gcTrimCommitOnLowMemory`設定します。 省略記号ボタンを示すようになります。 その他の設定、`runtime`ノード。 + 次の XML フラグメントは、`gcTrimCommitOnLowMemory` 設定を有効にする方法を示しています。 省略記号は、`runtime` ノード内のその他の設定を示します。 ```xml @@ -51,5 +54,5 @@ ms.lasthandoff: 10/18/2017 ``` -## 関連項目 +## 参照 [ガベージ コレクション](../../../docs/standard/garbage-collection/index.md) diff --git a/docs/standard/garbage-collection/unmanaged.md b/docs/standard/garbage-collection/unmanaged.md index 5e5b863b5e7..a4117219b52 100644 --- a/docs/standard/garbage-collection/unmanaged.md +++ b/docs/standard/garbage-collection/unmanaged.md @@ -18,22 +18,25 @@ helpviewer_keywords: - unmanaged resource cleanup - Finalize method ms.assetid: a17b0066-71c2-4ba4-9822-8e19332fc213 -caps.latest.revision: "19" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: c94a449edbbe38c4028e27fd946b66a054badf51 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: fea76042bb603889764a9d42b5a7836d704fcd48 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # アンマネージ リソースのクリーンアップ -アプリで作成されるオブジェクトのほとんどに依存することができます。ガベージ コレクターが NET のメモリ管理を処理します。 しかし、アンマネージ リソースを含むオブジェクトを作成する場合は、アプリケーションでそのオブジェクトの使用が終了した時点で、そのリソースを明示的に解放する必要があります。 アンマネージ リソースの種類で最も一般的なのは、ファイル、ウィンドウ、ネットワーク接続、データベース接続などのオペレーティング システム リソースをラップしたオブジェクトです。 ガベージ コレクターは、アンマネージ リソースをカプセル化したオブジェクトを有効期間全体にわたって監視できますが、アンマネージ リソースを解放しクリーンアップする方法については情報を持っていません。 +アプリケーションで作成するオブジェクトの大部分については、.NET のガベージ コレクターにメモリ管理を任せることができます。 しかし、アンマネージ リソースを含むオブジェクトを作成する場合は、アプリケーションでそのオブジェクトの使用が終了した時点で、そのリソースを明示的に解放する必要があります。 アンマネージ リソースの種類で最も一般的なのは、ファイル、ウィンドウ、ネットワーク接続、データベース接続などのオペレーティング システム リソースをラップしたオブジェクトです。 ガベージ コレクターは、アンマネージ リソースをカプセル化したオブジェクトを有効期間全体にわたって監視できますが、アンマネージ リソースを解放しクリーンアップする方法については情報を持っていません。 型でアンマネージ リソースを使用している場合は、次のようにする必要があります。 -- 実装、 [dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md)です。 これは、アンマネージ リソースの確定的解放を有効にするために の実装を提供する必要があります。 型のコンシューマーはオブジェクト (および使用するリソース) が不要になると を呼び出します。 メソッドはアンマネージ リソースを直ちに解放します。 +- [dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md)を実装します。 これは、アンマネージ リソースの確定的解放を有効にするために の実装を提供する必要があります。 型のコンシューマーはオブジェクト (および使用するリソース) が不要になると を呼び出します。 メソッドはアンマネージ リソースを直ちに解放します。 - 型のコンシューマーが の呼び出しを忘れた場合にアンマネージ リソースを解放します。 これには、2 つの方法があります。 @@ -47,7 +50,7 @@ ms.lasthandoff: 10/18/2017 ## このセクションの内容 [Dispose メソッドの実装](../../../docs/standard/garbage-collection/implementing-dispose.md) - 実装する方法について説明します、 [dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md)アンマネージ リソースを解放するためです。 + アンマネージ リソースを解放する [Dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md)を実装する方法について説明します。 [IDisposable を実装するオブジェクトの使用](../../../docs/standard/garbage-collection/using-objects.md) 型のコンシューマーが の実装を確実に呼び出す方法について説明します。 このためには、C# の `using` ステートメントまたは Visual Basic の `Using` ステートメントを使用することをお勧めします。 diff --git a/docs/standard/garbage-collection/using-objects.md b/docs/standard/garbage-collection/using-objects.md index 0a979ee613b..7f5e90ecf98 100644 --- a/docs/standard/garbage-collection/using-objects.md +++ b/docs/standard/garbage-collection/using-objects.md @@ -16,19 +16,22 @@ helpviewer_keywords: - try/finally block - garbage collection, encapsulating resources ms.assetid: 81b2cdb5-c91a-4a31-9c83-eadc52da5cf0 -caps.latest.revision: "15" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: fd78c2f99ca5c8ffe3c753e158ceba3e0c458c5b -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 47ff64cab098425c5369773f792d586b65658d0f +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # IDisposable を実装するオブジェクトの使用 -共通言語ランタイムのガベージ コレクターがマネージ オブジェクトによって使用されるメモリを解放がアンマネージ リソースを使用する型を実装、インターフェイスが解放されるアンマネージ リソースに割り当てられたメモリを有効にします。 を実装するオブジェクトを使い終わったら、オブジェクトの の実装を呼び出す必要があります。 2 つの方法のいずれかでこれを行うことができます。 +共通言語ランタイムのガベージ コレクターは、アンマネージ オブジェクトによって使用されているメモリを解放しますが、アンマネージ リソースを使用する型は、これらのアンマネージ リソースに割り当てられたメモリが解放されるように インターフェイスを実装しています。 を実装するオブジェクトを使い終わったら、オブジェクトの の実装を呼び出す必要があります。 2 つの方法のいずれかでこれを行うことができます。 * C# の `using` ステートメントまたは Visual Basic の `Using` ステートメントを使用します。 @@ -48,7 +51,7 @@ C# の `using` ステートメントおよび Visual Basic の `Using` ステー [!code-csharp[Conceptual.Disposable#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.disposable/cs/using3.cs#3)] [!code-vb[Conceptual.Disposable#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.disposable/vb/using3.vb#3)] -C#`using`ステートメントでは入れ子に内部的には 1 つのステートメントで複数のリソースを取得することもできます`using`ステートメントです。 次の例では、2 つの異なるファイルの内容を読み取るために、 の 2 つのオブジェクトをインスタンス化します。 +また、C# の `using` ステートメントでは、単一のステートメントで複数のリソースを取得できます。そのようなステートメントは、内部的には複数の `using` ステートメントを入れ子にした場合と同等です。 次の例では、2 つの異なるファイルの内容を読み取るために、 の 2 つのオブジェクトをインスタンス化します。 [!code-csharp[Conceptual.Disposable#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.disposable/cs/using4.cs#4)] @@ -60,15 +63,15 @@ C#`using`ステートメントでは入れ子に内部的には 1 つのステ * 宣言されたブロックに対してスコープがローカルでない を実装するオブジェクトをインスタンス化するため。 -使用する点を除いて、次の例は、前の例に似ています、`try/catch/finally`のインスタンスを作成、使用、および破棄するブロック、オブジェクト、およびによってスローされる例外を処理できる、コンス トラクターと、そのメソッドです。 `finally` メソッドを呼び出す前に を実装するオブジェクトが `null` でないことを ブロックのコードがチェックしていることに注意してください。 これを行わない場合、実行時に 例外が発生する可能性があります。 +次の例は前の例に似ていますが、`try/catch/finally` ブロックを使用して、 オブジェクトのインスタンス化、使用、破棄を実行し、 コンストラクターと メソッドによってスローされた例外を処理しています。 `finally` メソッドを呼び出す前に を実装するオブジェクトが `null` でないことを ブロックのコードがチェックしていることに注意してください。 これを行わない場合、実行時に 例外が発生する可能性があります。 [!code-csharp[Conceptual.Disposable#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.disposable/cs/using5.cs#6)] [!code-vb[Conceptual.Disposable#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.disposable/vb/using5.vb#6)] -実装するか、実装する必要がある場合は、この基本的なパターンを行うことができる、`try/finally`ブロックを使用するプログラミング言語をサポートしていないため、`using`ステートメントを直接呼び出すことを許可、メソッドです。 +この基本パターンを利用できるのは、プログラミング言語で `using` ステートメントがサポートされていないが、 メソッドを直接呼び出すことはできるため、`try/finally` ブロックの実装を選択した場合、または実装する必要がある場合です。 ## 関連項目 [アンマネージ リソースのクリーンアップ](../../../docs/standard/garbage-collection/unmanaged.md) -[using ステートメント (c# リファレンス)](~/docs/csharp/language-reference/keywords/using-statement.md) +[using ステートメント (C# リファレンス)](~/docs/csharp/language-reference/keywords/using-statement.md) [Using ステートメント (Visual Basic)](~/docs/visual-basic/language-reference/statements/using-statement.md) diff --git a/docs/standard/garbage-collection/weak-references.md b/docs/standard/garbage-collection/weak-references.md index aec35af6032..a20848af4f5 100644 --- a/docs/standard/garbage-collection/weak-references.md +++ b/docs/standard/garbage-collection/weak-references.md @@ -14,15 +14,18 @@ helpviewer_keywords: - weak references, long - garbage collection, weak references ms.assetid: 6a600fe5-3af3-4c64-82da-10a0a8e2d79b -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 906c23caa7065486bb094ad2475ed9e7e24b3d9c -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3ca1331cc45f437882d38adba241e2767821de36 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 弱い参照 ガベージ コレクターでは、アプリケーションのコードがオブジェクトにアクセスできる間、そのアプリケーションで使用中のオブジェクトを収集することはできません。 アプリケーションには、オブジェクトへの強い参照があると考えられます。 @@ -31,26 +34,26 @@ ms.lasthandoff: 10/18/2017 弱い参照は、多くのメモリを使用するが、ガベージ コレクションによって回収される場合、簡単に再作成できるオブジェクトに便利です。 - たとえば、Windows フォーム アプリケーションでのツリー ビューでは、オプションの場合は、複雑な階層的な選択をユーザーに表示します。 基になるデータが大きければ、ユーザーがアプリケーションで他の操作を行っている場合、ツリーをメモリ内に保持しても効果的ではありません。 + Windows フォーム アプリケーションのツリー ビューに、複雑な階層形式のオプション選択がユーザーに示されているとします。 基になるデータが大きければ、ユーザーがアプリケーションで他の操作を行っている場合、ツリーをメモリ内に保持しても効果的ではありません。 - ユーザーは、アプリケーションの別の部分に切り替えて、ときに行うこともできます、クラスをツリーへの弱い参照を作成し、すべての強力な参照を破棄します。 ユーザーがツリーに戻ると、アプリケーションはツリーへの強い参照を取得しようとします。成功した場合、ツリーの再作成は回避されます。 + ユーザーがアプリケーションの別の部分に切り替えている場合、 クラスを使用して、ツリーへの弱い参照を作成し、すべての強い参照を破棄できます。 ユーザーがツリーに戻ると、アプリケーションはツリーへの強い参照を取得しようとします。成功した場合、ツリーの再作成は回避されます。 - 作成するオブジェクトの弱い参照を確立するために、追跡対象となるオブジェクトのインスタンスを使用します。 設定して、にそのオブジェクトを設定し、オブジェクトへの参照を元のプロパティ`null`です。 コード例は、次を参照してください。クラス ライブラリです。 + オブジェクトで弱い参照を確立するには、追跡されるオブジェクトのインスタンスを使用して、 を作成します。 次に、そのオブジェクトの プロパティを設定して、オブジェクトへの元の参照を `null` に設定します。 コード例については、クラス ライブラリの「」を参照してください。 ## 短期間と長期間の弱い参照 短期間の弱い参照または長期間の弱い参照を作成できます。 - Short - 短期間の弱い参照の対象は、オブジェクトがガベージ コレクションによって回収されると、`null` になります。 弱い参照自体が管理オブジェクトであり、その他の管理オブジェクトと同じようにガベージ コレクションの対象です。 短いの弱い参照は、既定のコンス トラクターです。 + 短期間の弱い参照の対象は、オブジェクトがガベージ コレクションによって回収されると、`null` になります。 弱い参照自体が管理オブジェクトであり、その他の管理オブジェクトと同じようにガベージ コレクションの対象です。 短期間の弱い参照は、 の既定のコンストラクターです。 - Long - 長期間の弱い参照はオブジェクトの後に保持されますメソッドが呼び出されました。 これにより、オブジェクトが再作成されることを許可しますが、オブジェクトの状態は予測不可能なままです。 長い参照を使用する指定`true`で、コンス トラクターです。 + 長期間の弱い参照は、オブジェクトの メソッドが呼び出された後も保持されます。 これにより、オブジェクトが再作成されることを許可しますが、オブジェクトの状態は予測不可能なままです。 長い参照を使用するには、 コンストラクターに `true` を指定します。 - オブジェクトの型がない場合、メソッド、短い弱い参照機能を適用および弱い参照は有効なターゲットが収集されるまでの実行がファイナライザーの後にいつ発生する可能性はします。 + オブジェクトの型に メソッドがない場合、短期間の弱い参照の機能が適用され、弱い参照はターゲットが収集されるまで有効です。これはファイナライザーを実行した後であれば、いつでも発生する可能性があります。 - 強い参照を確立し、再度オブジェクトを使用するキャスト、のプロパティ、オブジェクトの型にします。 場合、プロパティから返される`null`オブジェクトが収集済みです。 それ以外の場合、アプリケーションが強い参照を再取得するためにオブジェクトを使用して続行することができます。 + 強い参照を確立して、もう一度オブジェクトを使用するには、オブジェクトの型に プロパティをキャストします。 プロパティが `null` を返す場合、オブジェクトが収集されます。それ以外の場合、アプリケーションがその強い参照を再取得するため、オブジェクトを使用し続けることができます。 ## 弱い参照を使用するためのガイドライン 終了処理後のオブジェクトの状態が予測できないため、長期間の弱い参照は必要な場合にのみ使用します。 @@ -59,5 +62,5 @@ ms.lasthandoff: 10/18/2017 メモリ管理の問題への自動的な解決方法として、弱い参照を使用しないでください。 代わりに、アプリケーションのオブジェクトを処理するために、効果的なキャッシュ ポリシーを開発します。 -## 関連項目 +## 参照 [ガベージ コレクション](../../../docs/standard/garbage-collection/index.md) diff --git a/docs/standard/generics/collections.md b/docs/standard/generics/collections.md index c681677c3fd..5a6a94c558c 100644 --- a/docs/standard/generics/collections.md +++ b/docs/standard/generics/collections.md @@ -16,21 +16,24 @@ helpviewer_keywords: - generics [.NET Framework], collections - generic collections [.NET Framework] ms.assetid: 5b646751-6ab7-465c-916c-b1a76aefa9f5 -caps.latest.revision: "8" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 94da20072f793e137b0b7545c1a658ed20537a7f -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d7e7d11446c14cffbef1e5cade5f082874187636 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # .NET Framework のジェネリック コレクション このトピックでは、.NET Framework のジェネリック コレクション クラスとその他のジェネリック型について概説します。 ## .NET Framework のジェネリック コレクション - .NET Framework クラス ライブラリでは、 および の名前空間に多数のジェネリック コレクション クラスが用意されています。 これらのクラスの詳細については、次を参照してください。[よく使用されるコレクション型](../../../docs/standard/collections/commonly-used-collection-types.md)です。 + .NET Framework クラス ライブラリでは、 および の名前空間に多数のジェネリック コレクション クラスが用意されています。 これらのクラスの詳細については、「[一般的に使用されるコレクション型](../../../docs/standard/collections/commonly-used-collection-types.md)」を参照してください。 ### System.Collections.Generic ジェネリック コレクション型の多くは、非ジェネリック型に直接類似しています。 は、 のジェネリック バージョンです。これは列挙体のために ではなくジェネリック構造体 を使用します。 @@ -58,7 +61,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.Generics.Overview#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.generics.overview/cs/source2.cs#7)] [!code-vb[Conceptual.Generics.Overview#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.generics.overview/vb/source2.vb#7)] -## 関連項目 +## 参照 [ジェネリック](../../../docs/standard/generics/index.md) diff --git a/docs/standard/generics/covariance-and-contravariance.md b/docs/standard/generics/covariance-and-contravariance.md index 41c5e7628d4..a776ac9d974 100644 --- a/docs/standard/generics/covariance-and-contravariance.md +++ b/docs/standard/generics/covariance-and-contravariance.md @@ -17,15 +17,18 @@ helpviewer_keywords: - covariance and contravariance in generics - generic type parameters ms.assetid: 2678dc63-c7f9-4590-9ddc-0a4df684d42e -caps.latest.revision: "24" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 1ae8b6da5917950664e1ab780b8db76cb6500e70 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2abd4c772c02c431ecb73139be7f620fe04d5d82 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # ジェネリックの共変性と反変性 共変性と反変性は、元の指定よりも弱い派生型 (具体性が低い) と強い派生型 (具体性が高い) を使用する能力を示す用語です。 ジェネリック型パラメーターは、ジェネリック型の代入と使用の柔軟性を向上させるために、共変性と反変性をサポートしています。 型システムにおいて、共変性、反変性、および不変性は、次のように定義されます。 各例では、基底クラスが `Base` という名前であり、派生クラスが `Derived`という名前であるとします。 @@ -60,11 +63,11 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[CoContraSimpleAction#1](../../../samples/snippets/csharp/VS_Snippets_CLR/cocontrasimpleaction/cs/example.cs#1)] [!code-vb[CoContraSimpleAction#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/cocontrasimpleaction/vb/example.vb#1)] - これは逆方向のように見えますが、コンパイルして実行できるタイプ セーフ コードです。 ラムダ式は代入先のデリゲートに一致するため、 `Base` 型のパラメーターを 1 つ受け取って戻り値を返さないメソッドを定義します。 `Action` デリゲートの型パラメーター `T` は反変であるため、結果として得られたデリゲートは 型の変数に代入できます。 `T` はパラメーター型を指定するため、コードはタイプ セーフです。 `Action` 型のデリゲートが `Action`型のデリゲートであるかのように呼び出される場合、その引数は `Derived`型である必要があります。 メソッドのパラメーターは `Base`型であるため、この引数は、基になるメソッドに常に安全に渡すことができます。 + これは逆方向のように見えますが、コンパイルして実行できるタイプ セーフ コードです。 ラムダ式は代入先のデリゲートに一致するため、`Base` 型のパラメーターを 1 つ受け取って戻り値を返さないメソッドを定義します。 `Action` デリゲートの型パラメーター `T` は反変であるため、結果として得られたデリゲートは 型の変数に代入できます。 `T` はパラメーター型を指定するため、コードはタイプ セーフです。 `Action` 型のデリゲートが `Action`型のデリゲートであるかのように呼び出される場合、その引数は `Derived`型である必要があります。 メソッドのパラメーターは `Base`型であるため、この引数は、基になるメソッドに常に安全に渡すことができます。 一般に、共変の型パラメーターはデリゲートの戻り値の型として使用でき、反変の型パラメーターはパラメーター型として使用できます。 インターフェイスについては、共変の型パラメーターをインターフェイスのメソッドの戻り値の型として使用でき、反変の型パラメーターをインターフェイスのメソッドのパラメーター型として使用できます。 - 共変性と反変性は、*"分散"* と総称されます。 共変または反変としてマークされていないジェネリック型パラメーターは、 *不変*と呼ばれます。 共通言語ランタイムにおける分散について、簡潔な概要を示します。 + 共変性と反変性は、"*分散*" と総称されます。 共変または反変としてマークされていないジェネリック型パラメーターは、 *不変*と呼ばれます。 共通言語ランタイムにおける分散について、簡潔な概要を示します。 - [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]のバリアント型パラメーターは、ジェネリック インターフェイス型と汎用デリゲート型に制限されています。 @@ -103,7 +106,7 @@ ms.lasthandoff: 11/21/2017 反変の型パラメーターの例を以下に示します。 この例では、`MustInherit` プロパティを使用して抽象 (Visual Basic では `Shape` ) `Area` クラスを定義しています。 また、 `ShapeAreaComparer` (Visual Basic では `IComparer` ) を実装する`IComparer(Of Shape)` クラスを定義しています。 メソッドの実装は `Area` プロパティの値に基づくため、`ShapeAreaComparer` を使用して、領域で `Shape` オブジェクトを並べ替えることができます。 - `Circle` クラスは `Shape` を継承し、 `Area`をオーバーライドします。 この例では、 (Visual Basic では `Circle` ) を受け取るコンストラクターを使用して、 `IComparer` オブジェクトの`IComparer(Of Circle)` を作成します。 ただし、 `IComparer`を渡す代わりに、 `ShapeAreaComparer` を実装する `IComparer`オブジェクトを渡します。 この例では、`Shape`ジェネリック インターフェイスの型パラメーターは反変であるため、コードがより強い派生型 (`Circle`) の比較子を要求している場合に、より弱い派生型 ( ) の比較子を渡すことができます。 + `Circle` クラスは `Shape` を継承し、 `Area`をオーバーライドします。 この例では、 (Visual Basic では `Circle` ) を受け取るコンストラクターを使用して、 `IComparer` オブジェクトの`IComparer(Of Circle)` を作成します。 ただし、`IComparer` を渡す代わりに、`ShapeAreaComparer` を実装する `IComparer` オブジェクトを渡します。 この例では、`Shape`ジェネリック インターフェイスの型パラメーターは反変であるため、コードがより強い派生型 (`Circle`) の比較子を要求している場合に、より弱い派生型 ( ) の比較子を渡すことができます。 新しい `Circle` オブジェクトを `SortedSet`に追加すると、新しい要素が既存の要素と比較されるたびに `IComparer.Compare` オブジェクトの`IComparer(Of Shape).Compare` メソッド (Visual Basic では `ShapeAreaComparer` メソッド) が呼び出されます。 このメソッドのパラメーターの型 (`Shape`) は、渡される型 (`Circle`) より弱い派生型なので、この呼び出しはタイプ セーフです。 反変性により、 `ShapeAreaComparer` で、単一の型のコレクションおよび `Shape`から派生した型の混合コレクションを並べ替えることができるようになります。 @@ -114,7 +117,7 @@ ms.lasthandoff: 11/21/2017 ## バリアント型パラメーターを持つ汎用デリゲート - [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)]では、 `Func` などの 汎用デリゲートに、共変の戻り値の型と反変のパラメーターの型があります。 `Action` などの 汎用デリゲートには、反変のパラメーターの型があります。 したがって、より強い派生型のパラメーターと、より弱い派生型の戻り値 ( `Func` 汎用デリゲートの場合) を持つ変数に、デリゲートを代入できます。 + [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)]では、 `Func` などの 汎用デリゲートに、共変の戻り値の型と反変のパラメーターの型があります。 `Action` などの 汎用デリゲートには、反変のパラメーターの型があります。 したがって、より強い派生型のパラメーターと、より弱い派生型の戻り値 (`Func` 汎用デリゲートの場合) を持つ変数に、デリゲートを代入できます。 > [!NOTE] > `Func` 汎用デリゲートの最後のジェネリック型パラメーターは、デリゲート シグネチャの戻り値の型を指定します。 他のジェネリック型パラメーターは反変 (`out` キーワード) ですが、この最後のジェネリック型パラメーターは共変 (`in` キーワード) です。 @@ -179,23 +182,23 @@ ms.lasthandoff: 11/21/2017 |型|共変の型パラメーター|反変の型パラメーター| |----------|-------------------------------|-----------------------------------| -|||はい| -|||はい| -||はい|はい| -||はい|| -||はい|はい| -|||はい| -|||はい| -|||はい| -||はい|| -||はい|| -|||はい| -||はい|| -||はい|| -||はい|| -||はい|| - -## 関連項目 +|||[はい]| +|||[はい]| +||[はい]|[はい]| +||[はい]|| +||[はい]|[はい]| +|||[はい]| +|||[はい]| +|||[はい]| +||[はい]|| +||[はい]|| +|||[はい]| +||[はい]|| +||[はい]|| +||[はい]|| +||[はい]|| + +## 参照 [共変性と反変性 (C#)](../../csharp/programming-guide/concepts/covariance-contravariance/index.md) [共変性と反変性 (Visual Basic)](../../visual-basic/programming-guide/concepts/covariance-contravariance/index.md) [デリゲートの分散](http://msdn.microsoft.com/library/e3b98197-6c5b-4e55-9c6e-9739b60645ca) diff --git a/docs/standard/globalization-localization/best-practices-for-developing-world-ready-apps.md b/docs/standard/globalization-localization/best-practices-for-developing-world-ready-apps.md index 92a19642ce3..b688dd50194 100644 --- a/docs/standard/globalization-localization/best-practices-for-developing-world-ready-apps.md +++ b/docs/standard/globalization-localization/best-practices-for-developing-world-ready-apps.md @@ -14,15 +14,18 @@ helpviewer_keywords: - globalization [.NET Framework], best practices - international applications [.NET Framework], best practices ms.assetid: f08169c7-aad8-4ec3-9a21-9ebd3b89986c -caps.latest.revision: "20" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 8a50080fa4b84abe84fbb1a44f18e1fb680a07c7 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 1fbdbe2596f44a6efda35b8c3e3aace303d79364 +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/19/2018 --- # 推奨される国際対応アプリケーション開発手順 このセクションでは、推奨される国際対応アプリケーション開発手順について説明します。 @@ -57,7 +60,7 @@ ms.lasthandoff: 11/21/2017 9. 国際対応オペレーティング システムで、国際対応データを使用してアプリケーションの機能をテストします。 -10. 文字列比較操作または大文字と小文字の変更操作の結果に基づいてセキュリティ上の決定を行う場合は、アプリケーションで実行する操作がカルチャに依存しないようにします。 こうすることで、`CultureInfo.CurrentCulture` の値が結果に影響を及ぼすことがなくなります。 「文字列比較を使用して、現在のカルチャ」を参照してください[文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md)をどのように、カルチャに依存した文字列を示す例については、比較が矛盾する結果を生成できます。 +10. 文字列比較操作または大文字と小文字の変更操作の結果に基づいてセキュリティ上の決定を行う場合は、アプリケーションで実行する操作がカルチャに依存しないようにします。 こうすることで、`CultureInfo.CurrentCulture` の値が結果に影響を及ぼすことがなくなります。 カルチャに依存した文字列比較により矛盾した結果がどのように生成されるかを示す例については、「[文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md)」の「現在のカルチャを使用する文字列比較」をご覧ください。 ## 推奨されるローカリゼーション手順 @@ -77,11 +80,11 @@ ms.lasthandoff: 11/21/2017 8. カルチャに基づいてリソースを取得するには、 クラスを使用します。 -9. 使用してローカライズできるように、Windows フォーム ダイアログ ボックスを作成する Visual Studio を使用して、 [Windows フォーム リソース エディター (Winres.exe)](../../../docs/framework/tools/winres-exe-windows-forms-resource-editor.md)です。 Windows フォームのダイアログ ボックスを手動でコーディングしないでください。 +9. Windows フォームのダイアログ ボックスを作成するには Visual Studio を使います。このように作成されたダイアログ ボックスは、[Windows フォーム リソース エディター (Winres.exe)](../../../docs/framework/tools/winres-exe-windows-forms-resource-editor.md) を使ってローカライズできます。 Windows フォームのダイアログ ボックスを手動でコーディングしないでください。 10. 専門的なローカライズ (翻訳) 作業を計画してください。 -11. 作成して、リソースのローカライズの詳細については、次を参照してください。[アプリケーションのリソース](../../../docs/framework/resources/index.md)です。 +11. リソースの作成とローカライズについて詳しくは、「[デスクトップ アプリケーションのリソース](../../../docs/framework/resources/index.md)」をご覧ください。 ## 推奨される ASP.NET アプリケーションのグローバライズ手順 @@ -99,7 +102,7 @@ ms.lasthandoff: 11/21/2017 4. ASP.NET アプリケーション内の次の 3 か所で、requestEncoding、responseEncoding、fileEncoding、culture、uiCulture の各属性の値を指定します。 - - Web.config ファイルのグローバリゼーション セクション。 Web.config ファイルは、ASP.NET アプリケーションの外部ファイルです。 詳細については、次を参照してください。 [\<グローバリゼーション > 要素](http://msdn.microsoft.com/en-us/e2dffc8e-ebd2-439b-a2fd-e3ac5e620da7)です。 + - Web.config ファイルのグローバリゼーション セクション。 Web.config ファイルは、ASP.NET アプリケーションの外部ファイルです。 詳しくは、「[\ 要素](http://msdn.microsoft.com/library/e2dffc8e-ebd2-439b-a2fd-e3ac5e620da7)」をご覧ください。 - ページ ディレクティブ。 アプリケーションがページを処理している時点では、ファイルは既に読み取られています。 そのため、fileEncoding と requestEncoding を指定するには遅すぎます。 ページ ディレクティブでは uiCulture、Culture、および responseEncoding だけを指定できます。 @@ -107,6 +110,6 @@ ms.lasthandoff: 11/21/2017 5. uiCulture 値には、ブラウザー受け入れ言語を設定できます。 -## 関連項目 +## 参照 [グローバライズとローカライズ](../../../docs/standard/globalization-localization/index.md) [デスクトップ アプリケーションのリソース](../../../docs/framework/resources/index.md) diff --git a/docs/standard/globalization-localization/culture-insensitive-string-operations.md b/docs/standard/globalization-localization/culture-insensitive-string-operations.md index abbf27ab90a..f1d21511532 100644 --- a/docs/standard/globalization-localization/culture-insensitive-string-operations.md +++ b/docs/standard/globalization-localization/culture-insensitive-string-operations.md @@ -18,20 +18,23 @@ helpviewer_keywords: - culture-sensitive string operations - culture-insensitive string operations ms.assetid: e6e2bb94-a95d-44e2-b68c-cfdd1db77784 -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: dddd46dc5d825738dd9d5038ae573910122953c8 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 697d3ec32af6b704fbb1787bbb9ba1de57a0632e +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # カルチャを認識しない文字列操作 カルチャを認識する文字列操作は、カルチャごとにユーザーに結果を表示するようデザインされたアプリケーションを作成する場合に役立ちます。 既定では、カルチャを認識するメソッドは、使用するカルチャを現在のスレッドの プロパティから取得します。 - ただし、カルチャを認識する文字列操作は、必ずしも望ましい動作ではありません。 結果をカルチャに依存させない場合に、カルチャを認識する操作を使用すると、カスタムの大文字と小文字の対応規則および並べ替え規則を使用するカルチャでのアプリケーション コードの実行が失敗することがあります。 例についてを参照してください「の文字列比較を使用して、現在のカルチャ」、[文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md)資料です。 + ただし、カルチャを認識する文字列操作は、必ずしも望ましい動作ではありません。 結果をカルチャに依存させない場合に、カルチャを認識する操作を使用すると、カスタムの大文字と小文字の対応規則および並べ替え規則を使用するカルチャでのアプリケーション コードの実行が失敗することがあります。 たとえば、「[.NET で文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md)」の記事の「現在のカルチャを使用する文字列比較」を参照してください。 文字列操作でカルチャに依存するかどうかは、アプリケーションで結果をどのように使用するかに基づいて決定する必要があります。 ユーザーに結果を表示する場合は、通常、カルチャを認識する文字列操作を実行する必要があります。 たとえば、アプリケーションがローカライズされた文字列を並べ替えてリスト ボックスに表示する場合は、カルチャを認識する並べ替えを実行します。 @@ -39,5 +42,5 @@ ms.lasthandoff: 10/18/2017 開発するアプリケーションにローカリゼーションとグローバリゼーションに対応するためのコードが含まれているかどうかに関係なく、.NET Framework のメソッドは既定ではカルチャを認識する結果を取得することに注意してください。 このトピックの目的は、アプリケーションがこれらのメソッドを使用してカルチャを認識しない結果を取得するための正しい方法を示すことです。 -## 関連項目 +## 参照 [グローバライズとローカライズ](../../../docs/standard/globalization-localization/index.md) diff --git a/docs/standard/globalization-localization/globalization.md b/docs/standard/globalization-localization/globalization.md index 59c52c7db42..94f5e0b1e6d 100644 --- a/docs/standard/globalization-localization/globalization.md +++ b/docs/standard/globalization-localization/globalization.md @@ -19,15 +19,18 @@ helpviewer_keywords: - application development [.NET Framework], globalization - culture, globalization ms.assetid: 4e919934-6b19-42f2-b770-275a4fae87c9 -caps.latest.revision: "15" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: a60284bf2db8f47dd17c04fad5cbd6db4970a8a7 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 357d18843af0af2869d0ec98def6c733e51f9a4c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # グローバリゼーション グローバリゼーションとは、さまざまな文化圏 (カルチャ) のユーザー向けに、ローカライズされたインターフェイスと、その地域に合ったデータをサポートするような、国際対応アプリの設計と開発をいいます。 設計フェーズに着手する前に、アプリでサポートするカルチャを決定してください。 アプリは既定値として 1 つのカルチャまたは地域を対象としますが、別のカルチャまたは地域のユーザーに簡単に拡張できるようにアプリを設計および作成できます。 @@ -36,37 +39,37 @@ ms.lasthandoff: 11/21/2017 次のセクションでは、グローバライズされたアプリで文字列、日付と時刻の値、および数値を処理するときに考慮する必要がある重要な問題および使用できるベスト プラクティスについて説明します。 -- [文字列を処理します。](../../../docs/standard/globalization-localization/globalization.md#HandlingStrings) +- [文字列を処理する](../../../docs/standard/globalization-localization/globalization.md#HandlingStrings) - - [Unicode を内部で使用します。](../../../docs/standard/globalization-localization/globalization.md#Strings_Unicode) + - [Unicode を内部で使用する](../../../docs/standard/globalization-localization/globalization.md#Strings_Unicode) - - [リソース ファイルの使用](../../../docs/standard/globalization-localization/globalization.md#Strings_Resources) + - [リソース ファイルを使用する](../../../docs/standard/globalization-localization/globalization.md#Strings_Resources) - - [検索して文字列を比較します。](../../../docs/standard/globalization-localization/globalization.md#Strings_Searching) + - [文字列を検索して比較する](../../../docs/standard/globalization-localization/globalization.md#Strings_Searching) - - [等しいかどうかの文字列をテストします。](../../../docs/standard/globalization-localization/globalization.md#Strings_Equality) + - [文字列の等価性をテストする](../../../docs/standard/globalization-localization/globalization.md#Strings_Equality) - - [順序付けと文字列の並べ替え](../../../docs/standard/globalization-localization/globalization.md#Strings_Ordering) + - [文字列の順序付けと並べ替えを実行する](../../../docs/standard/globalization-localization/globalization.md#Strings_Ordering) - - [文字列連結を回避します。](../../../docs/standard/globalization-localization/globalization.md#Strings_Concat) + - [文字列の連結を回避する](../../../docs/standard/globalization-localization/globalization.md#Strings_Concat) -- [日付と時刻の処理](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes) +- [日付と時刻を処理する](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes) - - [永続化する日付と時刻](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_Persist) + - [日付と時刻を保持する](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_Persist) - - [日付と時刻を表示します。](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_Display) + - [日付と時刻を表示する](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_Display) - - [シリアル化とタイム ゾーンに対応](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_TimeZones) + - [シリアル化とタイム ゾーンへの対応](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_TimeZones) - - [日付と時刻の演算を実行します。](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_Arithmetic) + - [日付と時刻の演算を実行する](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_Arithmetic) -- [数値の値の処理](../../../docs/standard/globalization-localization/globalization.md#Numbers) +- [数値を処理する](../../../docs/standard/globalization-localization/globalization.md#Numbers) - - [数値を表示します。](../../../docs/standard/globalization-localization/globalization.md#Numbers_Display) + - [数値を表示する](../../../docs/standard/globalization-localization/globalization.md#Numbers_Display) - - [数値を保持します。](../../../docs/standard/globalization-localization/globalization.md#Numbers_Persist) + - [数値を保持する](../../../docs/standard/globalization-localization/globalization.md#Numbers_Persist) -- [カルチャに固有の設定の操作](../../../docs/standard/globalization-localization/globalization.md#Cultures) +- [カルチャ固有の設定を使用する](../../../docs/standard/globalization-localization/globalization.md#Cultures) ## 文字列を処理する @@ -97,7 +100,7 @@ ms.lasthandoff: 11/21/2017 ローカライズされたアプリを作成する場合、リソース ファイルを使用することには特に利点があります。 サテライト アセンブリにリソースを配置すると プロパティで定義されているユーザーの現在の UI カルチャに基づいて、共通言語ランタイムが自動的にカルチャに応じたリソースを選択します。 適切なカルチャ固有のリソースを提供し、 オブジェクトを正しくインスタンス化するか、厳密に型指定されたリソース クラスを使用すると、ランタイムは適切なリソースの取得の詳細を処理します。 - リソース ファイルの作成の詳細については、次を参照してください。[リソース ファイルの作成](../../../docs/framework/resources/creating-resource-files-for-desktop-apps.md)です。 作成して、サテライト アセンブリの展開については、次を参照してください。[サテライト アセンブリの作成](../../../docs/framework/resources/creating-satellite-assemblies-for-desktop-apps.md)と[パッケージ化と配置リソース](../../../docs/framework/resources/packaging-and-deploying-resources-in-desktop-apps.md)です。 + リソース ファイルの作成の詳細については、[リソース ファイルの作成](../../../docs/framework/resources/creating-resource-files-for-desktop-apps.md)に関する記事を参照してください。 サテライト アセンブリの作成と展開の詳細については、[サテライト アセンブリの作成](../../../docs/framework/resources/creating-satellite-assemblies-for-desktop-apps.md)と[リソースのパッケージ化と展開](../../../docs/framework/resources/packaging-and-deploying-resources-in-desktop-apps.md)に関するページを参照してください。 ### 文字列を検索して比較する @@ -182,7 +185,7 @@ ms.lasthandoff: 11/21/2017 - 書式指定文字列を含む -- [複合書式指定](../../../docs/standard/base-types/composite-formatting.md)日付と共に使用したときに、機能 +- [複合書式指定](../../../docs/standard/base-types/composite-formatting.md)機能 (日付と共に使用する場合) 次の例では、2012 年 10 月 11 日の日の出と日没のデータを 2 回表示します。 最初に、現在のカルチャをクロアチア語 (クロアチア) に設定し、次に英語 (英国) に設定します。 どちらの場合も、日付と時刻はそのカルチャに適した書式で表示されます。 @@ -213,7 +216,7 @@ ms.lasthandoff: 11/21/2017 ### シリアル化とタイム ゾーンへの対応 日付と時刻の値は、一般的な時刻 ("店舗は 2013 年 1 月 2 日の午前 9 時に開店します") から特定の時点 ("生年月日: 2013 年 1 月 2 日午前 6 時 32 分 00 秒") まで、多様に解釈できます。 時刻の値が特定の時点を表し、それをシリアル化された値から復元する場合、ユーザーの地理的場所またはタイム ゾーンに関係なく同じ特定の時点を表すことを確認する必要があります。 - この問題を説明する例を次に示します。 1 つのローカル日付と時刻の値を 3 つの文字列として保存[標準形式](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)(一般的な日付、長い形式の時刻の並べ替え可能な日付/時刻、"s"の"G"、"o"ラウンド トリップの日付/時刻) およびバイナリ形式のです。 + この問題を説明する例を次に示します。 この例では、1 つのローカル日付と時刻の値を、3 つの[標準書式](../../../docs/standard/base-types/standard-date-and-time-format-strings.md) (一般の日付と長い形式の時刻の "G"、並べ替え可能な日付と時刻の "s"、およびラウンド トリップする日付と時刻の "o") の文字列として、およびバイナリ形式で保存します。 [!code-csharp[Conceptual.Globalization#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/dates4.cs#10)] [!code-vb[Conceptual.Globalization#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/dates4.vb#10)] @@ -263,13 +266,13 @@ ms.lasthandoff: 11/21/2017 3/31/2013 3:00:00 AM Local ``` - 詳細については、次を参照してください。[に変換する時間の間のタイム ゾーン](../../../docs/standard/datetime/converting-between-time-zones.md)です。 + 詳細については、「[Converting Times Between Time Zones](../../../docs/standard/datetime/converting-between-time-zones.md)」(タイム ゾーン間での時刻の変換) を参照してください。 ### 日付と時刻の演算を実行する 型と 型は、算術演算をサポートします。 2 つの日付の値の差を計算したり、日付の値に特定の時間間隔を加算または減算したりできます。 ただし、日付と時刻の値に対する算術演算では、タイム ゾーンとタイム ゾーン調整規則が考慮されません。 このため、時点を表す値に対して日付と時刻の算術を実行すると、不正確な結果が返されることがあります。 - たとえば、太平洋標準時から太平洋夏時間への切り替えは、3 月の第 2 日曜日、2013 年の場合は 3 月 10 日に行われます。 次の例として、日を計算し、時刻が、示します 48 時間後は、2013 年 3 月 9 日午前 10 時 30 分 システムでは太平洋標準時ゾーンの結果、2013 年 3 月 11 日午前 10 時 30 分にアカウントに介在する時間の調整は取りません。 + たとえば、太平洋標準時から太平洋夏時間への切り替えは、3 月の第 2 日曜日、2013 年の場合は 3 月 10 日に行われます。 次の例に示すように、太平洋標準時ゾーンのシステムで 2013 年 3 月 9 日午前 10 時 30 分の 48 時間後の日時を計算すると、 結果は 2013 年 3 月 11 日午前 10 時 30 分となり、その間の時間調整は考慮されません。 [!code-csharp[Conceptual.Globalization#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/dates5.cs#8)] [!code-vb[Conceptual.Globalization#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/dates5.vb#8)] @@ -287,7 +290,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.Globalization#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/dates6.cs#9)] [!code-vb[Conceptual.Globalization#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/dates6.vb#9)] - 詳細については、次を参照してください。[日付と時刻の算術演算操作の実行](../../../docs/standard/datetime/performing-arithmetic-operations.md)です。 + 詳細については、「[日付と時刻を使用した算術演算の実行](../../../docs/standard/datetime/performing-arithmetic-operations.md)」を参照してください。 ### 日付要素のカルチャに依存した名前を使用する アプリによっては、月または曜日の名前を表示することが必要になる場合があります。 これを実行するために、次のようなコードが一般に使用されます。 @@ -297,7 +300,7 @@ ms.lasthandoff: 11/21/2017 ただし、このコードは曜日の名前を必ず英語で返します。 多くの場合、月の名前を抽出するコードには、さらに柔軟性がありません。 一般に、このようなコードでは特定の言語の月の名前を使用した 12 か月の暦を前提としています。 - 使用して[カスタム日付/時刻の書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)のプロパティをオブジェクトを簡単に次の例に示すように、曜日や月で、ユーザーのカルチャの曜日名を反映する文字列を抽出します。 この例では、現在のカルチャをフランス語 (フランス) に変更し、2013 年 7 月 1 日の曜日の名前と月の名前を表示します。 + 次の例に示すように、[カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)または オブジェクトのプロパティを使用すると、ユーザーのカルチャの曜日または月の名前を反映する文字列を簡単に抽出できます。 この例では、現在のカルチャをフランス語 (フランス) に変更し、2013 年 7 月 1 日の曜日の名前と月の名前を表示します。 [!code-csharp[Conceptual.Globalization#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/monthname2.cs#20)] [!code-vb[Conceptual.Globalization#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/monthname2.vb#20)] @@ -317,7 +320,7 @@ ms.lasthandoff: 11/21/2017 - 書式指定文字列を引数として含む任意の数値型の `ToString(String)` メソッド -- [複合書式指定](../../../docs/standard/base-types/composite-formatting.md)機能、数値と共に使用した場合 +- [複合書式指定](../../../docs/standard/base-types/composite-formatting.md)機能 (数値と共に使用する場合) 次の例では、パリ (フランス) の毎月の平均気温を表示します。 この例では、最初にデータを表示する前に現在のカルチャをフランス語 (フランス) に設定し、次に英語 (米国) に設定します。 どちらの場合も、月の名前と気温はそのカルチャに適した形式で表示されます。 この 2 つのカルチャでは、気温の値に使用する小数点記号が異なります。 また、この例では、"MMMM" カスタム日時書式指定文字列を使用して月の正式名を表示し、 配列で最も長い月の名前の長さを確認することで、結果の文字列の月の名前に適切な領域を割り当てます。 @@ -374,8 +377,8 @@ ms.lasthandoff: 11/21/2017 - .NET Framework では置換カルチャをサポートしています。 これにより、既存の標準カルチャを補足または既存の標準カルチャを完全に置き換える新しいカスタム カルチャを定義できます。 -- ユーザーを使用してカルチャに固有の設定をカスタマイズすることができます、**地域と言語**コントロール パネルでのアプリです。 オブジェクトをインスタンス化するときに、 コンストラクターを呼び出すことでこのようなユーザーによるカスタマイズを反映するかどうかを決定できます。 通常は、エンド ユーザーのアプリでは、ユーザー設定を尊重して、ユーザー自身が予期する形式でデータを表示する必要があります。 +- ユーザーは、コントロール パネルの **[地域と言語]** アプリを使用してカルチャ固有の設定をカスタマイズできます。 オブジェクトをインスタンス化するときに、 コンストラクターを呼び出すことでこのようなユーザーによるカスタマイズを反映するかどうかを決定できます。 通常は、エンド ユーザーのアプリでは、ユーザー設定を尊重して、ユーザー自身が予期する形式でデータを表示する必要があります。 -## 関連項目 +## 参照 [グローバライズとローカライズ](../../../docs/standard/globalization-localization/index.md) [文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md) diff --git a/docs/standard/globalization-localization/localization.md b/docs/standard/globalization-localization/localization.md index 1a3215723ba..20e785b46c9 100644 --- a/docs/standard/globalization-localization/localization.md +++ b/docs/standard/globalization-localization/localization.md @@ -20,26 +20,29 @@ helpviewer_keywords: - localization [.NET Framework], about localization - localizing resources ms.assetid: 49d520d7-92d7-44ee-bb24-8b615db1d41b -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 4aaf2da77a1fab55cbebd6bfa05a2b1c74e5cbbd -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 952696cf813a4bd0915f85a02946489d389d23e7 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # ローカリゼーション -ローカライズは、アプリケーションのリソースをアプリケーションでサポートされる各カルチャのローカライズ版に変換するプロセスです。 完了後にのみローカライズの手順に進む必要があります、[ローカライズ化のレビュー](../../../docs/standard/globalization-localization/localizability-review.md)グローバライズされたアプリケーションがローカライズ可能であることを確認する手順。 +ローカリゼーションはアプリケーションのリソースを翻訳するプロセスであり、そのアプリケーションで対応するカルチャ別のバージョンが作られます。 [ローカライズ化の確認](../../../docs/standard/globalization-localization/localizability-review.md)手順で世界展開するアプリケーションがローカライズ可能であることを確認してから、ローカリゼーション手順に進んでください。 - ローカライズ可能なアプリケーションは、2 つの概念ブロック、すべてのユーザー インターフェイス要素を格納するブロックと実行可能コードを格納するブロックに分割されます。 ユーザー インターフェイス ブロックには、文字列、エラー メッセージ、ダイアログ ボックス、メニューのニュートラル カルチャについての埋め込みオブジェクト リソースなどのローカライズ可能なユーザー インターフェイス要素のみが含まれています。 コード ブロックには、サポートされているすべてのカルチャが使用するアプリケーション コードだけが含まれています。 共通言語ランタイムには、そのリソースからアプリケーションの実行可能コードを分離するサテライト アセンブリ リソース モデルがサポートしています。 このモデルの実装の詳細については、次を参照してください。[デスクトップ アプリでのリソース](../../../docs/framework/resources/index.md)です。 + ローカライズ可能なアプリケーションは、概念的に 2 つのブロックに分けられます。すべてのユーザー インターフェイス要素を含むブロックと実行可能なコードを含むブロックです。 ユーザー インターフェイス ブロックには、ローカライズ可能なユーザー インターフェイス要素のみが含まれます。ニュートラル カルチャの場合、文字列、エラー メッセージ、ダイアログ ボックス、メニュー、埋め込みオブジェクト リソースなどです。 コード ブロックには、すべての対応カルチャで使用されるアプリケーション コードのみが含まれます。 共通言語ランタイムは、アプリケーションの実行可能コードをそのリソースから分離させるサテライト アセンブリ リソース モデルに対応しています。 このモデルの実装方法については、「[デスクトップ アプリケーションのリソース](../../../docs/framework/resources/index.md)」を参照してください。 - アプリケーションの各ローカライズ バージョンでは、ローカライズされたユーザー インターフェイス ブロックが、ターゲット カルチャに適切な言語に翻訳を含む新しいサテライト アセンブリを追加します。 すべてのカルチャのコード ブロックは同じである必要があります。 ユーザー インターフェイスを使用してブロックのコード ブロックのローカライズされたバージョンの組み合わせには、アプリケーションのローカライズされたバージョンが生成されます。 + アプリケーションのローカライズ バージョンごとに、ターゲット カルチャの言語に翻訳されたユーザー インターフェイス ブロックを含む新しいサテライト アセンブリを追加します。 すべてのカルチャのコード ブロックを同じにしてください。 ユーザー インターフェイス ブロックのローカライズされたバージョンとコード ブロックを組み合わせることで、アプリケーションのローカライズ バージョンが作られます。 - [!INCLUDE[winsdklong](../../../includes/winsdklong-md.md)]ターゲットのカルチャに対して Windows フォームをすばやくローカライズできるようにする Windows フォーム リソース エディター (Winres.exe) を提供します。 このツールの使用方法の詳細については、次を参照してください。 [Winres.exe (Windows フォーム リソース エディター)](../../../docs/framework/tools/winres-exe-windows-forms-resource-editor.md)です。 + [!INCLUDE[winsdklong](../../../includes/winsdklong-md.md)] には Windows フォーム リソース エディター (Winres.exe) があります。このエディターでは、ターゲット カルチャに合わせて Windows フォームを簡単にローカライズできます。 このツールの使用方法については、「[Winres.exe (Windows フォーム リソース エディター)](../../../docs/framework/tools/winres-exe-windows-forms-resource-editor.md)」を参照してください。 -## 関連項目 +## 参照 [グローバライズとローカライズ](../../../docs/standard/globalization-localization/index.md) [ローカライズ化の確認](../../../docs/standard/globalization-localization/localizability-review.md) [グローバリゼーション](../../../docs/standard/globalization-localization/globalization.md) diff --git a/docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md b/docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md index 7966e716fbf..fb513722a38 100644 --- a/docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md +++ b/docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md @@ -21,22 +21,25 @@ helpviewer_keywords: - String.ToUpper method - culture parameter ms.assetid: 822d551c-c69a-4191-82f4-183d82c9179c -caps.latest.revision: "18" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: c500b882c335572b8b458ba515b282e9f5362b85 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: e65eb85e1355d3aa98e04e7bd73f0194243dcdb1 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # カルチャを認識しない大文字と小文字の変更の実行 の各メソッドには、パラメーターを受け取らないオーバーロードが用意されています。 既定では、パラメーターを使用しないこれらのオーバーロードは、 の値に基づいて大文字と小文字の変更を実行します。 このため、大文字と小文字を区別する結果がカルチャによって異なる場合があります。 大文字と小文字の変更がカルチャに依存するかどうかを明確にするには、`culture` パラメーターを明示的に指定する必要があるこれらのメソッドのオーバーロードを使用する必要があります。 大文字と小文字の変更がカルチャに依存する場合は、`CultureInfo.CurrentCulture` パラメーターとして `culture` を指定します。 大文字と小文字の変更がカルチャに依存しない場合は、`CultureInfo.InvariantCulture` パラメーターとして `culture` を指定します。 後で検索しやすいように文字列の大文字と小文字を変換する場合があります。 文字列をこのように使用する場合は、`CultureInfo.InvariantCulture` パラメーターとして `culture` を指定する必要があります。 の値が、大文字と小文字を変更してから検索が実行されるまでの間に変更される可能性があるからです。 - セキュリティに関する決定が文字列の大文字と小文字の変更操作に基づいて行われる場合は、この操作がカルチャに依存しないようにして、操作の結果が `CultureInfo.CurrentCulture` の値により影響されないようにする必要があります。 「文字列比較を使用して、現在のカルチャ」を参照してください、[文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md)アーティクルに対してどのカルチャに依存した文字列の操作を示す例は、矛盾する結果を生成できます。 + セキュリティに関する決定が文字列の大文字と小文字の変更操作に基づいて行われる場合は、この操作がカルチャに依存しないようにして、操作の結果が `CultureInfo.CurrentCulture` の値により影響されないようにする必要があります。 カルチャに依存した文字列操作によって矛盾した結果がどのように生成されるかを示す例については、「[文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md)」の記事の「現在のカルチャを使用する文字列比較」の記事を参照してください。 ## String.ToUpper メソッドと String.ToLower メソッドの使用 コードをわかりやすくするために、`String.ToUpper` パラメーターを明示的に指定できる `String.ToLower` メソッドと `culture` メソッドのオーバーロードを常に使用することをお勧めします。 識別子の検索を実行するコード例を次に示します。 `key.ToLower` 操作は既定ではカルチャを認識しますが、この動作はコードを見ても明確ではありません。 @@ -72,9 +75,9 @@ static object LookupKey(string key) ``` ## Char.ToUpper メソッドと Char.ToLower メソッドの使用 - `Char.ToUpper`と`Char.ToLower`メソッドと同じ特性があります、`String.ToUpper`と`String.ToLower`メソッド、影響を受けるカルチャだけはトルコ語 (トルコ) およびアゼルバイジャン語 (ラテン、アゼルバイジャン)。 単一の文字の大文字と小文字の区別が異なるのは、この 2 つのカルチャだけです。 この固有の大文字と小文字の対応の詳細については、 クラスに関するトピックの「Casing (大文字と小文字の指定)」を参照してください。 コードをわかりやすくし、結果の一貫性を確保するために、`culture` パラメーターを明示的に指定できるこれらのメソッドのオーバーロードを常に使用することをお勧めします。 + `Char.ToUpper` メソッドおよび `Char.ToLower` メソッドはそれぞれ `String.ToUpper` メソッドおよび `String.ToLower` メソッドと同じ特性を持っていますが、影響を受けるカルチャはトルコ語 (トルコ) およびアゼルバイジャン語 (ラテン、アゼルバイジャン) だけです。 単一の文字の大文字と小文字の区別が異なるのは、この 2 つのカルチャだけです。 この固有の大文字と小文字の対応の詳細については、 クラスに関するトピックの「Casing (大文字と小文字の指定)」を参照してください。 コードをわかりやすくし、結果の一貫性を確保するために、`culture` パラメーターを明示的に指定できるこれらのメソッドのオーバーロードを常に使用することをお勧めします。 -## 関連項目 +## 参照 diff --git a/docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md b/docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md index 69a3db9c37d..9cc91f4d863 100644 --- a/docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md +++ b/docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md @@ -19,15 +19,18 @@ helpviewer_keywords: - culture-insensitive string operations, comparisons - culture parameter ms.assetid: abae50ef-32f7-4a50-a540-fd256fd1aed0 -caps.latest.revision: "23" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 980b4ac515deaaedb1ab7e240e8f110a5fd0d51c -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: fa689a685a58868ccd34b8bcbc4a779b9f826473 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # カルチャを認識しない文字列比較の実行 既定では、 メソッドはカルチャを認識し、大文字と小文字を区別する比較を実行します。 また、このメソッドには、使用するカルチャを `culture` パラメーターで指定し、使用する比較規則を `comparisonType` パラメーターで指定できる、複数のオーバーロードが含まれています。 既定のオーバーロードの代わりにこれらのメソッドを呼び出すと、特定のメソッド呼び出しで使用する規則に関するあいまいさが解消され、特定の比較がカルチャに依存するかどうかが明確になります。 @@ -35,7 +38,7 @@ ms.lasthandoff: 11/21/2017 > [!NOTE] > メソッドの両方のオーバーロードでは、カルチャに依存した比較と大文字と小文字を区別する比較を実行します。このメソッドを使用してカルチャに依存しない比較を実行することはできません。 コードをわかりやすくするために、 メソッドを代わりに使用することをお勧めします。 - カルチャに依存する操作の場合は、 パラメーターとして 列挙値または `comparisonType` 列挙値を指定します。 現在のカルチャ以外の指定されたカルチャを使用して、カルチャに依存した比較を実行するには、指定する場合、としてカルチャを表すオブジェクト、`culture`パラメーター。 + カルチャに依存する操作の場合は、 パラメーターとして 列挙値または `comparisonType` 列挙値を指定します。 現在のカルチャ以外の指定されたカルチャを使用して、カルチャに依存した比較を実行する場合は、`culture` パラメーターとして、そのカルチャを表す オブジェクトを指定します。 メソッドでサポートされている、カルチャに依存しない文字列比較は、言語的な比較 (インバリアント カルチャの並べ替え規則に基づきます) または非言語的な比較 (文字列内の文字の序数値に基づきます) です。 カルチャに依存しないほとんどの文字列比較は非言語的な比較です。 このような比較の場合は、 パラメーターとして 列挙値または `comparisonType` 列挙値を指定します。 たとえば、セキュリティに関する決定 (ユーザー名やパスワードの比較など) が文字列比較の結果に基づいて行われる場合は、この操作をカルチャに依存しない非言語的な比較に指定して、操作の結果が特定のカルチャまたは言語の規則に影響されないようにする必要があります @@ -46,7 +49,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.Strings.CultureInsensitiveComparison#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.cultureinsensitivecomparison/cs/cultureinsensitive1.cs#1)] [!code-vb[Conceptual.Strings.CultureInsensitiveComparison#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.cultureinsensitivecomparison/vb/cultureinsensitive1.vb#1)] -## 関連項目 +## 参照 [カルチャを認識しない文字列操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md) diff --git a/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-arrays.md b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-arrays.md index 62c58fdaa2b..9571618ef78 100644 --- a/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-arrays.md +++ b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-arrays.md @@ -13,22 +13,25 @@ helpviewer_keywords: - arrays [.NET Framework], culture-insensitive string operations - comparer parameter ms.assetid: f12922e1-6234-4165-8896-63f0653ab478 -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 1b4e040ed379cdbf43fbe8b2c4379fdd4dc781f2 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d273fbaa792092f5ea56bfa59392794b6728ed67 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # カルチャを認識しない配列の操作の実行 -オーバー ロードが、メソッドは、既定値を使用してカルチャに依存した並べ替えを実行、プロパティです。 これらのメソッドによって返されるカルチャに依存した結果は、並べ替え順序の違いによりカルチャごとに異なることができます。 カルチャに依存した動作を回避するを受け取るこのメソッドのオーバー ロードのいずれかの操作を使用して、`comparer`パラメーター。 `comparer`パラメーターを指定します、配列内の要素を比較するときに使用する実装。 パラメーターには、指定を使用してカスタムのロケールに依存しない比較演算子クラスです。 「SortedList クラスを使用して、」サブトピックでカスタム ロケールに依存しない比較子クラスの例が提供される、[コレクション内のカルチャを認識しない文字列操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md)トピックです。 + メソッドと メソッドのオーバーロードは、 プロパティを使用して、カルチャを認識する並べ替えを既定で実行します。 これらのメソッドで返されたカルチャを認識した結果は、並べ替え順序の違いに起因し、カルチャによって異なる場合があります。 カルチャを認識した動作を回避するには、`comparer` パラメーターを受け入れる、このメソッドのいずれかのオーバーロードを使用します。 `comparer` パラメーターによって、配列の要素を比較するときに使用する 実装が指定されます。 このパラメーターには、 を使用するカスタム invariant comparer クラスを指定してください。 カスタム invariant comparer クラスの例は、「[カルチャを認識しないコレクションの操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md)」トピックのサブトピック「SortedList クラスの使用」にあります。 - **注**渡す**CultureInfo.InvariantCulture**を比較するメソッドは、カルチャに依存しない比較を実行します。 ただし、これによって、ファイル パス、レジストリ キー、環境変数などで、非言語的な比較が行われることはありません。 また、比較結果に基づいたセキュリティに関する決定もサポートされません。 非言語的な比較または結果ベースのセキュリティを決定するためのサポートは、アプリケーション メソッドを使用して、比較を受け付ける、値。 アプリケーションに渡す必要があります、です。 + **注** **CultureInfo.InvariantCulture** を比較メソッドに渡すと、カルチャを認識しない比較が実行されます。 ただし、これによって、ファイル パス、レジストリ キー、環境変数などで、非言語的な比較が行われることはありません。 また、比較結果に基づいたセキュリティに関する決定もサポートされません。 非言語的な比較や、結果に基づくセキュリティに関する決定については、アプリケーションは 値を受け入れる比較メソッドを使用する必要があります。 アプリケーションは を渡します。 -## 関連項目 +## 参照 diff --git a/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md index 58270da660e..b0c3ce9fa38 100644 --- a/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md +++ b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md @@ -21,20 +21,23 @@ helpviewer_keywords: - SortedList class, culture-insensitive string operations - culture parameter ms.assetid: 5cdc9396-a64b-4615-a1cd-b605db4c5983 -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: a1ecba9c055f8e99d26283c7f37c2430dc17bf31 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b84f25aa2470104be98b9f3858091c44f40ba6a7 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # カルチャを認識しないコレクションの操作の実行 -クラスとメンバーがある、名前空間を既定ではカルチャに依存した動作を提供します。 既定のコンス トラクター、クラスの新しいインスタンスを使用して、初期化、プロパティです。 すべてのオーバー ロード、メソッドの新しいインスタンスを作成する、クラスを使用して、`Thread.CurrentCulture`既定ではプロパティです。 オーバー ロードが、メソッドは、既定値を使用してカルチャに依存した並べ替えを実行`Thread.CurrentCulture`です。 並べ替えと検索、影響を受ける`Thread.CurrentCulture`キーとして文字列を使用する場合。 このセクションで説明する推奨使用方法に従うと、`Collections` 名前空間のこれらのクラスとメソッドでカルチャを認識しない結果が得られます。 +既定ではカルチャを認識する動作を提供するクラスとメンバーは 名前空間にあります。 クラスおよび クラスの既定のコンストラクターは、 プロパティを使用して新しいインスタンスを初期化します。 メソッドのすべてのオーバーロードは、既定で `Thread.CurrentCulture` プロパティを使用して、 クラスの新しいインスタンスを作成します。 メソッドのオーバーロードは、`Thread.CurrentCulture` を使用して既定でカルチャを認識した並べ替えを実行します。 での並べ替えと検索は、文字列がキーとして使用されるときに、`Thread.CurrentCulture` によって影響を受けることがあります。 このセクションで説明する推奨使用方法に従うと、`Collections` 名前空間のこれらのクラスとメソッドでカルチャを認識しない結果が得られます。 - **注**渡すを比較するメソッドは、カルチャに依存しない比較を実行します。 ただし、これによって、ファイル パス、レジストリ キー、環境変数などで、非言語的な比較が行われることはありません。 また、比較結果に基づいたセキュリティに関する決定もサポートされません。 非言語的な比較または結果ベースのセキュリティを決定するためのサポートは、アプリケーション メソッドを使用して、比較を受け付ける、値。 アプリケーションに渡す必要があります、です。 + **注:** を比較メソッドに渡すと、カルチャを認識しない比較が実行されます。 ただし、これによって、ファイル パス、レジストリ キー、環境変数などで、非言語的な比較が行われることはありません。 また、比較結果に基づいたセキュリティに関する決定もサポートされません。 非言語的な比較や、結果に基づくセキュリティに関する決定については、アプリケーションは 値を受け入れる比較メソッドを使用する必要があります。 アプリケーションは を渡します。 ## CaseInsensitiveComparer クラスおよび CaseInsensitiveHashCodeProvider クラスの使用 `CaseInsensitiveHashCodeProvider` および `CaseInsensitiveComparer` の既定コンストラクターは、`Thread.CurrentCulture` を使用してクラスの新しいインスタンスを初期化し、その結果としてカルチャを認識した動作が行われます。 次のコード例は `Hashtable` を示します。これがカルチャを認識するのは、`CaseInsensitiveHashCodeProvider` と `CaseInsensitiveComparer` の既定コンストラクターを使用するためです。 @@ -47,7 +50,7 @@ internalHashtable = New Hashtable(CaseInsensitiveHashCodeProvider.Default, CaseI internalHashtable = new Hashtable(CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default); ``` - カルチャに依存しないを作成する場合`Hashtable`を使用して、`CaseInsensitiveComparer`と`CaseInsensitiveHashCodeProvider`クラスを受け入れるコンス トラクターを使用してこれらのクラスの新しいインスタンスを初期化、`culture`パラメーター。 `culture` パラメーターに を指定してください。 カルチャを認識しない `Hashtable` を次のコード例で示します。 + `CaseInsensitiveComparer` クラスと `CaseInsensitiveHashCodeProvider` クラスを使用してカルチャを認識しない `Hashtable` を作成したい場合は、`culture` パラメーターを受け取るコンストラクターを使用してこれらのクラスの新しいインスタンスを初期化します。 `culture` パラメーターに を指定してください。 カルチャを認識しない `Hashtable` を次のコード例で示します。 ```vb internalHashtable = New Hashtable(New @@ -78,7 +81,7 @@ internalHashtable = new Hashtable(new CaseInsensitiveHashCodeProvider ## SortedList クラスの使用 - `SortedList`は、キーによって並べ替えられ、キーとインデックスを使ってアクセスできる、キーと値のペアのコレクションを表します。 文字列がキーであるときに `SortedList` を使用すると、並べ替えと検索が `Thread.CurrentCulture` プロパティの影響を受けることがあります。 `SortedList` でカルチャを認識しない動作を実行するには、`comparer` パラメーターを受け取るコンストラクターの 1 つを使用して `SortedList` を作成します。 `comparer`パラメーターを指定します、キーを比較するときに使用する実装。 このパラメーターには、キーを比較するために `CultureInfo.InvariantCulture` を使用するカスタム comparer クラスを指定してください。 次の例は、カルチャを認識しないカスタム comparer クラスです。これは `SortedList`コンストラクターの `comparer` パラメーターとして指定できます。 + `SortedList`は、キーによって並べ替えられ、キーとインデックスを使ってアクセスできる、キーと値のペアのコレクションを表します。 文字列がキーであるときに `SortedList` を使用すると、並べ替えと検索が `Thread.CurrentCulture` プロパティの影響を受けることがあります。 `SortedList` でカルチャを認識しない動作を実行するには、`comparer` パラメーターを受け取るコンストラクターの 1 つを使用して `SortedList` を作成します。 `comparer` パラメーターは、キーの比較に使用される の実装を指定します。 このパラメーターには、キーを比較するために `CultureInfo.InvariantCulture` を使用するカスタム comparer クラスを指定してください。 次の例は、カルチャを認識しないカスタム comparer クラスです。これは `SortedList`コンストラクターの `comparer` パラメーターとして指定できます。 ```vb Imports System @@ -140,7 +143,7 @@ internal class InvariantComparer : IComparer ## ArrayList.Sort メソッドの使用 `ArrayList.Sort` メソッドのオーバーロードは、`Thread.CurrentCulture`プロパティを使用して、カルチャを認識する並べ替えを既定で実行します。 結果は、さまざまな並べ替え順序のためカルチャによって変わることがあります。 カルチャを認識した動作を回避するには、`IComparer`実装を受け入れるこのメソッドのオーバーロードを使用します。 `comparer` パラメーターには、`CultureInfo.InvariantCulture` を使用するカスタム invariant comparer クラスを指定してください。 カスタム invariant comparer クラスの例は、「[SortedList クラスの使用](#cpconperformingculture-insensitivestringoperationsincollectionsanchor1)」のトピックをご覧ください。 -## 関連項目 +## 参照 diff --git a/docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md index 0186086f8a0..a0db5edf239 100644 --- a/docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md +++ b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md @@ -17,33 +17,36 @@ helpviewer_keywords: - culture, custom case mappings - culture-insensitive string operations, method overloads ms.assetid: 579ef891-1f83-4c63-9ebd-2f40406b5b91 -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: e703e9adc531b7d1695d3e9bbed61a2c0f62ad31 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 62aa839d2dae2f6dc84d529a8abf5061367f221f +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # カルチャを認識しない文字列操作の実行 -既定ではカルチャに依存した文字列の操作を実行するほとんどの .NET Framework メソッドには、明示的に渡すことで使用するカルチャを指定することを許可するメソッド オーバー ロードが用意されて、パラメーター。 これらのオーバーロードによって、大文字小文字のマップおよび並べ替え規則のカルチャによる違いを排除し、カルチャを認識しない結果を確保できます。 +カルチャを認識する文字列操作を既定で実行するほとんどの .NET Framework メソッドには、 パラメーターを渡すことによって使用するカルチャを明示的に指定できるメソッド オーバーロードが用意されています。 これらのオーバーロードによって、大文字小文字のマップおよび並べ替え規則のカルチャによる違いを排除し、カルチャを認識しない結果を確保できます。 ここでは、既定ではカルチャを認識する .NET Framework のメソッドを使用して、カルチャを認識しない文字列操作を実行する方法を説明します。 ## このセクションの内容 [カルチャを認識しない文字列比較の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md) - 使用する方法について説明します、カルチャを認識しない文字列比較を実行するメソッド。 + メソッドと メソッドを使用してカルチャを認識しない文字列比較を実行する方法について説明します。 [カルチャを認識しない大文字と小文字の変更の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md) - 使用する方法について説明します、 、およびカルチャに依存しないケース変更を実行するメソッド。 + の各メソッドを使用してカルチャを認識しない大文字と小文字の変換を実行する方法について説明します。 [カルチャを認識しないコレクションの操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md) - 使用する方法について説明します、 クラス、 コレクションでカルチャに依存しない操作を実行します。 + クラス、 を使用して、コレクションでカルチャを認識しない操作を実行する方法について説明します。 [カルチャを認識しない配列の操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-arrays.md) - 使用する方法について説明します、配列内のカルチャに依存しない操作を実行するメソッド。 + メソッドと メソッドを使用してカルチャを認識しない配列の操作を実行する方法について説明します。 ## 関連項目 [カルチャを認識しない文字列操作](../../../docs/standard/globalization-localization/culture-insensitive-string-operations.md) diff --git a/docs/standard/guidance-architecture.md b/docs/standard/guidance-architecture.md index b915658ca19..54e61db19a7 100644 --- a/docs/standard/guidance-architecture.md +++ b/docs/standard/guidance-architecture.md @@ -1,31 +1,34 @@ --- -title: ".NET のアーキテクチャ ガイダンス" -description: "設計、デザイン、および .NET のソフトウェアの構築の recoommended プラクティスについて説明します。" -keywords: "Docker, Microservices、ASP.NET、コンテナー、アーキテクチャ" +title: ".NET アーキテクチャ ガイダンス" +description: ".NET ソフトウェアを設計し、構築するときの推奨プラクティスを紹介します。" +keywords: "Docker, マイクロサービス, ASP.NET, コンテナー, アーキテクチャ" author: BillWagner ms.author: wiwagn ms.date: 10/26/2017 ms.prod: .net ms.technology: dotnet -ms.openlocfilehash: 008ab640c7708e0ae692ce30e77f34ba53f6c07e -ms.sourcegitcommit: 5d0e069655439984862a835f400058b7e8bbadc6 +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 24c02dfec62304293ab574b90c24c1332ce78108 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/28/2017 +ms.lasthandoff: 12/23/2017 --- -# .NET のアーキテクチャ ガイダンス +# .NET アーキテクチャ ガイダンス -## [Microsoft プラットフォームとツールを使って Docker のコンテナー化アプリケーションのライフ サイクル](./containerized-lifecycle-architecture/index.md) +## [Microsoft プラットフォームとツールでコンテナー化された Docker アプリケーションのライフサイクル](./containerized-lifecycle-architecture/index.md) -このガイドは、開発、検証、および Docker を Visual Studio と Microsoft Azure を使用してコンテナー化アプリケーションを配置に使用することをお勧めのエンド ツー エンドのライフ サイクルのプロセスの概要です。 +このガイドは、Visual Studio と Microsoft Azure を使用し、コンテナー化された Docker アプリケーションを開発し、検証し、デプロイするための推奨ライフサイクル プロセスを端から端まで紹介するものです。 -## [Azure のクラウドと Windows コンテナーで既存の .NET アプリケーションを最新化します。](./modernize-with-azure-and-containers/index.md) +## [Azure クラウドおよび Windows コンテナーで既存の .NET アプリケーションを最新にする](./modernize-with-azure-and-containers/index.md) -このガイドは、Azure クラウドと Windows コンテナーに既存の web アプリケーションを移行する必要があります戦略の概要です。 コードの方法、データの移行、orchestrators、について学習し、CI/CD 処理します。 +このガイドは、Azure クラウドと Windows コンテナーに既存の Web アプリケーションを移行する計画の概要です。 コード計画、データ移行、オーケストレーター、CI/CD プロセスについて説明します。 -## [ASP.NET Core と Azure での最新の web アプリケーションを設計します。](modern-web-apps-azure-architecture/index.md) +## [ASP.NET Core および Azure での最新の Web アプリケーションの設計](modern-web-apps-azure-architecture/index.md) -このガイドは、推奨されるアーキテクチャ、設計、および ASP.NET および ASP.NET Core アプリケーションを作成し、Azure でそれらのアプリケーションをホストするときに使用する展開プロセスの概要です。 +このガイドは、ASP.NET アプリケーションや ASP.NET Core アプリケーションを構築し、Azure でホストするための推奨設計/デプロイ プロセスの概要になっています。 ## [コンテナーとマイクロサービス ベースのアプリケーションの設計](microservices-architecture/index.md) diff --git a/docs/standard/io/common-i-o-tasks.md b/docs/standard/io/common-i-o-tasks.md index f6f3eef38d4..06d11f1f37c 100644 --- a/docs/standard/io/common-i-o-tasks.md +++ b/docs/standard/io/common-i-o-tasks.md @@ -1,5 +1,5 @@ --- -title: "I O の一般的なタスク" +title: "共通 I/O タスク" ms.custom: ms.date: 03/30/2017 ms.prod: .net @@ -8,20 +8,24 @@ ms.suite: ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article -helpviewer_keywords: I/O, common tasks +helpviewer_keywords: +- I/O, common tasks ms.assetid: bf00c380-706a-4e38-b829-454a480629fc -caps.latest.revision: "15" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 51238020f4d93ad32dac85a95d7b1cab26f2dd64 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: be291265d59dca5d1f555f8a98a3d0c79235f3c3 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 共通 I/O タスク - 名前空間には、読み取り、書き込みなどの各種アクションをファイル、ディレクトリ、およびストリーム上で実行できるようにするいくつかのクラスが用意されています。 詳細については、次を参照してください。[ファイルおよびストリームは-o](../../../docs/standard/io/index.md)です。 + 名前空間には、読み取り、書き込みなどの各種アクションをファイル、ディレクトリ、およびストリーム上で実行できるようにするいくつかのクラスが用意されています。 詳細については、「[ファイルおよびストリーム入出力](../../../docs/standard/io/index.md)」を参照してください。 ## 共通ファイル タスク @@ -59,7 +63,7 @@ ms.lasthandoff: 11/21/2017 |ディレクトリのサイズの確認| クラス| |ディレクトリが存在するかどうかの確認| メソッド| -## 関連項目 +## 参照 [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) [ストリームの構成](../../../docs/standard/io/composing-streams.md) [非同期ファイル I/O](../../../docs/standard/io/asynchronous-file-i-o.md) diff --git a/docs/standard/io/composing-streams.md b/docs/standard/io/composing-streams.md index 5a46cdc58ea..56daac013fa 100644 --- a/docs/standard/io/composing-streams.md +++ b/docs/standard/io/composing-streams.md @@ -19,34 +19,37 @@ helpviewer_keywords: - base streams - streams, backing stores ms.assetid: da761658-a535-4f26-a452-b30df47f73d5 -caps.latest.revision: "10" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 75800210a52620c5b08a01c5f8fa888bf40843fe -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d49661e93675b80bcd579a6cd341b3dc88a688c2 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # ストリームの構成 -バッキング ストアは、ディスク、メモリなどの記憶域メディアです。 それぞれ異なるバッキング ストアの実装としての独自のストリームの実装、クラスです。 各ストリームの種類では、読み取り、特定のバッキング ストアとバイトを書き込みます。 バッキング ストアに接続しているストリームには、基本ストリームは呼び出されます。 基本ストリームでは、バッキング ストアにストリームを接続するために必要なパラメーターを持つコンス トラクターがあります。 たとえば、コンス トラクターで、プロセスというように、ファイルの共有方法を指定します、パスのパラメーターを指定します。 +バッキング ストアは、ディスクやメモリなどの記憶域メディアです。 さまざまなバッキング ストアが クラスの実装としてそれぞれ独自のストリームを実装しています。 各ストリームの種類は、指定されたバッキング ストアとの間でバイトの読み取りと書き込みを行います。 バッキング ストアに接続するストリームは、基本ストリームと呼ばれます。 基本ストリームには、ストリームをバッキング ストアに接続するために必要なパラメーターを持つコンストラクターがあります。 たとえば、 には、プロセスでファイルを共有する方法を指定する path パラメーターなどを指定するコンストラクターがあります。 - デザイン、簡略化されたストリームを構成するクラスを提供します。 基本ストリームは、必要な機能を提供する 1 つ以上のパススルー ストリームにアタッチできます。 推奨される種類を読み取りまたは簡単に記述できるようにする、リーダーまたはライターが、チェーンの末尾にアタッチできます。 + クラスは、簡易なストリーム構成で設計されています。 必要な機能を提供する 1 つ以上のパススルー ストリームに基本ストリームをアタッチすることができます。 好みの種類の読み取りまたは書き込みを簡単に実行できるように、チェーンの末端に閲覧者またはライターをアタッチすることができます。 - 次のコード例を作成、 **FileStream** 、既存の周囲`MyFile.txt`バッファーへの順序で`MyFile.txt`です。 (なお**Filestream**は既定ではバッファーに格納します)。次に、から文字を読み取るには、 **FileStream**に渡される、 **StreamReader**コンス トラクター引数として。 まで読み取ります文字を検索します。 + 次のコード例では、`MyFile.txt` をバッファーするために既存の `MyFile.txt` を中心にして **FileStream** を作成します (**FileStreams** は既定でバッファーされます)。次に、**FileStream** から文字を読み取る が作成されます。これはコンストラクター引数として **StreamReader** に渡されます。 は、 によって文字が検出されなくなるまで読み取りを行います。 [!code-cpp[System.IO.StreamReader#20](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.IO.StreamReader/CPP/source2.cpp#20)] [!code-csharp[System.IO.StreamReader#20](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.IO.StreamReader/CS/source2.cs#20)] [!code-vb[System.IO.StreamReader#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.IO.StreamReader/VB/source2.vb#20)] - 次のコード例を作成、 **FileStream** 、既存の周囲`MyFile.txt`バッファーへの順序で`MyFile.txt`です。 (なお**Filestream**は既定ではバッファーに格納します)。次に、 **BinaryReader**からバイトを読み取りが作成、 **FileStream**に渡される、 **BinaryReader**コンス トラクター引数として。 まで読み取ります以上のバイトを検索します。 + 次のコード例では、`MyFile.txt` をバッファーするために既存の `MyFile.txt` を中心にして **FileStream** を作成します (**FileStreams** は既定でバッファーされます)。次に、**FileStream** からバイトを読み取る **BinaryReader** が作成されます。これはコンストラクター引数として **BinaryReader** に渡されます。 は、 によってバイトが検出されなくなるまで読み取りを行います。 [!code-cpp[System.IO.StreamReader#21](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.IO.StreamReader/CPP/source3.cpp#21)] [!code-csharp[System.IO.StreamReader#21](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.IO.StreamReader/CS/source3.cs#21)] [!code-vb[System.IO.StreamReader#21](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.IO.StreamReader/VB/source3.vb#21)] -## 関連項目 +## 参照 diff --git a/docs/standard/io/how-to-anticipate-out-of-space-conditions-with-isolated-storage.md b/docs/standard/io/how-to-anticipate-out-of-space-conditions-with-isolated-storage.md index a0bf96bd2e0..db3b59b078a 100644 --- a/docs/standard/io/how-to-anticipate-out-of-space-conditions-with-isolated-storage.md +++ b/docs/standard/io/how-to-anticipate-out-of-space-conditions-with-isolated-storage.md @@ -28,31 +28,34 @@ helpviewer_keywords: - isolated storage, out of space conditions - data storage using isolated storage, out of space conditions ms.assetid: e35d4535-3732-421e-b1a3-37412e036145 -caps.latest.revision: "17" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: d813522d0aeb9bf37582c167760d44268df27039 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: e04b4b85b9a14e842c94226017fcd903ad1cbb40 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 分離ストレージの領域不足状態に備える -分離ストレージを使用するコードがによって制約される、[クォータ](../../../docs/standard/io/isolated-storage.md#quotas)データ コンパートメントを分離ストレージ ファイルとディレクトリは存在して最大サイズを指定します。 クォータは、セキュリティ ポリシーによって定義され、管理者が設定します。 サイズを超えると、データを書き込もうとしたときに、最大値が許可された場合、例外がスローされ、操作は失敗します。 これにより、データ ストレージがいっぱいであるために、要求を拒否するようにアプリケーションを引き起こす可能性のある悪意のあるサービス拒否攻撃を防ぐことができます。 +分離ストレージを使用するコードは、分離ストレージ ファイルとディレクトリが存在するデータ コンパートメントの最大サイズを規定する[クォータ](../../../docs/standard/io/isolated-storage.md#quotas)の制約を受けます。 クォータはセキュリティ ポリシーによって定義され、管理者が構成できます。 データの書き込み時に許容される最大サイズを超えると、 例外がスローされ、操作は失敗します。 データ ストレージを容量不足にしてアプリケーションの要求拒否を引き起こす可能性がある悪意のあるサービス拒否攻撃を、この方法で防ぐことができます。 - 特定の書き込みが試行はこのため、失敗する可能性があるかどうかを判断する際、クラスには、次の 3 つの読み取り専用プロパティが用意されています: 、およびです。 これらのプロパティを使用して、ストアへの書き込みが最大許容サイズを超えたストアを引き起こすかどうかを決定することができます。 同時にアクセスできる分離ストレージを注意してください。そのため、残りの記憶域の容量を計算するときに、記憶域スペースによって消費されるストアに書き込むしようとする時間。 ただし、使用可能記憶域の上限に近づいてかどうかを確認するため、ストアの最大サイズを使用することができます。 + この理由で特定の書き込み試行が失敗する可能性があるかどうかを判断できるように、 クラスには 3 つの読み取り専用のプロパティ が用意されています。 これらのプロパティを使用して、ストアへの書き込みによってストアの最大許容サイズを超えるかどうかを判断できます。 分離ストレージには同時にアクセスできます。そのため、残りのストレージ容量を計算しても、ストアに書き込もうとするまでにストレージ領域が使用される可能性がある点に注意してください。 ただし、ストアの最大サイズを使用すると、使用できるストレージの上限に近づいているかどうかを判断できます。 - プロパティは、適切に機能するアセンブリから証拠によって異なります。 このためでのみこのプロパティを取得する必要がありますを使用して作成されたオブジェクト、 、またはメソッドです。 他の方法で作成されたオブジェクト (から返されたオブジェクトなど、メソッド) で正確な最大サイズは返されません。 + プロパティはアセンブリからの証拠に応じて適切に動作します。 この理由から、、または メソッドを使用して作成された オブジェクトでのみ、このプロパティを取得するようにします。 その他の方法で作成された オブジェクト ( メソッドから返されたオブジェクトなど) は正確な最大サイズを返しません。 ## 例 - 次のコード例は、分離ストアを取得、いくつかのファイルを作成し、取得、プロパティです。 残りの領域は、バイト単位で報告されます。 + 次のコード例は、分離ストアを取得し、いくつかのファイルを作成し、 プロパティを取得します。 残りの容量はバイト単位で報告されます。 [!code-cpp[Conceptual.IsolatedStorage#8](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source7.cpp#8)] [!code-csharp[Conceptual.IsolatedStorage#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source7.cs#8)] [!code-vb[Conceptual.IsolatedStorage#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source7.vb#8)] -## 関連項目 +## 参照 [分離ストレージ](../../../docs/standard/io/isolated-storage.md) [方法: 分離ストレージでストアを取得する](../../../docs/standard/io/how-to-obtain-stores-for-isolated-storage.md) diff --git a/docs/standard/io/how-to-compress-and-extract-files.md b/docs/standard/io/how-to-compress-and-extract-files.md index a982d5b3016..1bd062f366d 100644 --- a/docs/standard/io/how-to-compress-and-extract-files.md +++ b/docs/standard/io/how-to-compress-and-extract-files.md @@ -16,18 +16,21 @@ helpviewer_keywords: - compression - compress files ms.assetid: e9876165-3c60-4c84-a272-513e47acf579 -caps.latest.revision: "19" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 22a95ce18b602d4e329499c5d36557213e08a8b5 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 33c9249692998aea8c22ddbf75a5a9b7bdf28708 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法 : ファイルを圧縮して抽出する -名前空間は、圧縮および圧縮解除ファイルおよびストリームの次の種類を格納します。 閲覧、圧縮されたファイルの内容を変更してこれらの型を使用することもできます。 + 名前空間には、ファイルおよびストリームを圧縮および展開するための次の型が含まれています。 これらの型を使用して、圧縮ファイルの内容を読み取り、変更することもできます。 - @@ -39,33 +42,33 @@ ms.lasthandoff: 11/21/2017 - - 次の例では、圧縮されたファイルを操作するときに実行できる機能のいくつかを示します。 + 圧縮ファイルを操作するときに実行できる機能の例を次に示します。 ## 例 - この例は、作成しを使用してファイル名拡張子が .zip の圧縮ファイルを抽出する方法を示しています、クラスです。 新しい .zip ファイルに、フォルダーの内容を圧縮し、その新しいフォルダーにそのコンテンツを抽出します。 使用する、クラスを参照する必要がある、`System.IO.Compression.FileSystem`プロジェクト内のアセンブリ。 + この例では、 クラスを使用して .zip ファイル名拡張子を持つ圧縮ファイルの作成と抽出を行う方法を示しています。 フォルダーの内容を新しい .zip ファイルに圧縮し、その内容を新しいフォルダーに抽出します。 クラスを使用するには、プロジェクトの `System.IO.Compression.FileSystem` アセンブリを参照する必要があります。 [!code-csharp[System.IO.Compression.ZipFile#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.zipfile/cs/program1.cs#1)] [!code-vb[System.IO.Compression.ZipFile#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.zipfile/vb/program1.vb#1)] ## 例 - 次の例では、既存の .zip ファイルの内容を反復処理し、.txt 拡張子を持つファイルを抽出する方法を示します。 使用して、既存の .zip ファイルにアクセスするクラスと圧縮ファイル内の個々 のエントリを検査するクラス。 拡張メソッドを使用して () のオブジェクト。 拡張メソッドがで使用できる、クラスです。 使用する、クラスを参照する必要がある、`System.IO.Compression.FileSystem`プロジェクト内のアセンブリ。 + 次の例は、既存の .zip ファイルの内容を反復処理し、拡張子が .txt のファイルを抽出する方法を示しています。 クラスを使用して既存の .zip ファイルにアクセスし、 クラスを使用して圧縮ファイル内の個々のエントリを検査します。 オブジェクトの拡張メソッド () を使用しています。 拡張メソッドは、 クラスで使用できます。 クラスを使用するには、プロジェクトの `System.IO.Compression.FileSystem` アセンブリを参照する必要があります。 [!code-csharp[System.IO.Compression.ZipArchive#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.ziparchive/cs/program1.cs#1)] [!code-vb[System.IO.Compression.ZipArchive#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.ziparchive/vb/program1.vb#1)] ## 例 - 次の例では、クラスの既存の .zip ファイルにアクセスして、圧縮ファイルに新しいファイルに追加します。 既存の .zip ファイルに追加すると、新しいファイルが圧縮されます。 + 次の例では、 クラスを使用して既存の .zip ファイルにアクセスし、新しいファイルを圧縮ファイルに追加します。 新しいファイルは、既存の .zip ファイルに追加するときに圧縮されます。 [!code-csharp[System.IO.Compression.ZipArchiveMode#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.ziparchivemode/cs/program1.cs#1)] [!code-vb[System.IO.Compression.ZipArchiveMode#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.ziparchivemode/vb/program1.vb#1)] ## 例 - 使用することも、クラスして、データを圧縮します。 同じ圧縮アルゴリズムを使用します。 圧縮されたによって提供されるメソッドだけでなく多くの一般的なツールを使用して、拡張子を持つファイルに書き込まれるオブジェクトの圧縮を解除できるです。 この例は、圧縮し、を使用してファイルのディレクトリを圧縮解除する方法を示します、クラスです。 + また、 クラスと クラスを使用してデータを圧縮および展開することもできます。 圧縮と展開には同じ圧縮アルゴリズムが使用されます。 拡張子が .gz のファイルに書き込まれた圧縮済み オブジェクトは、 で提供されているメソッドに加えて、多くの一般的なツールを使用して展開できます。 この例では、 クラスを使用してファイルのディレクトリを圧縮および展開する方法を示します。 [!code-csharp[IO.Compression.GZip1#1](../../../samples/snippets/csharp/VS_Snippets_CLR/IO.Compression.GZip1/CS/gziptest.cs#1)] [!code-vb[IO.Compression.GZip1#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/IO.Compression.GZip1/VB/gziptest.vb#1)] -## 関連項目 +## 参照 diff --git a/docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md b/docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md index bf568864b11..be4cb51e578 100644 --- a/docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md +++ b/docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md @@ -12,15 +12,18 @@ dev_langs: - csharp - vb ms.assetid: 23a763ea-8348-4244-9f8c-a4280b870b47 -caps.latest.revision: "15" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 11c22bf71109137ea328b8e1136180494364ce0e -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d9e4c1c0b432ff44af0410b1efdc3940cd0ff19c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: .NET Framework ストリームと Windows ランタイム ストリームの間で変換を行う Windows ストア アプリ用 .NET Framework は、完全な .NET Framework のサブセットです。 Windows ストア アプリのセキュリティおよびその他の要件のために、ファイルを開いたり読み取ったりするために使用する .NET Framework API の完全なセットを使用できません。 詳細については、 [「Windows ストア アプリ用 .NET の概要」](http://msdn.microsoft.com/library/windows/apps/br230302.aspx)を参照してください。 ただし、他のストリームの処理操作のために .NET Framework API を使用することもできます。 これらのストリームを操作するには、 などの .NET Framework ストリーム型と、 [IInputStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.iinputstream.aspx)、 [IOutputStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.ioutputstream.aspx)、 [IRandomAccessStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.irandomaccessstream.aspx)などの Windows ランタイム ストリームの間で変換が必要になる場合があります。 @@ -86,7 +89,7 @@ Windows ストア アプリ用 .NET Framework は、完全な .NET Framework の [!code-csharp[System.IO.WindowsRuntimeStreamExtensionsEx#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.windowsruntimestreamextensionsex/cs/mainpage.xaml.cs#2)] [!code-vb[System.IO.WindowsRuntimeStreamExtensionsEx#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.windowsruntimestreamextensionsex/vb/mainpage.xaml.vb#2)] -## 関連項目 - [クイック スタート: 読み書きファイル (Windows)](http://msdn.microsoft.com/library/windows/apps/hh464978.aspx) - [.NET Windows ストア アプリの概要](http://msdn.microsoft.com/library/windows/apps/br230302.aspx) +## 参照 + [クイック スタート: ファイルの読み取りと書き込み (Windows)](http://msdn.microsoft.com/library/windows/apps/hh464978.aspx) + [Windows ストア アプリ用 .NET の概要](http://msdn.microsoft.com/library/windows/apps/br230302.aspx) [Windows ストア アプリ用 .NET – サポートされている API](http://msdn.microsoft.com/library/windows/apps/br230232.aspx) diff --git a/docs/standard/io/how-to-create-files-and-directories-in-isolated-storage.md b/docs/standard/io/how-to-create-files-and-directories-in-isolated-storage.md index f21a42c0a56..e0926692328 100644 --- a/docs/standard/io/how-to-create-files-and-directories-in-isolated-storage.md +++ b/docs/standard/io/how-to-create-files-and-directories-in-isolated-storage.md @@ -20,32 +20,35 @@ helpviewer_keywords: - stores, creating files and directories - storing data using isolated storage, creating files and directories ms.assetid: 2ca4d2a4-809b-4f00-bc08-bf4a64d3a5c3 -caps.latest.revision: "12" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 8b8a48473bf9ac91b89657d00d27031255491353 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: cf6295e7d58d03e7b4bf4e0a00cfc509d289e071 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法 : 分離ストレージでファイルおよびディレクトリを作成する -分離ストアを取得した後は、ディレクトリとデータを格納するファイルを作成できます。 ストア内でファイルおよびディレクトリ名は仮想ファイル システムのルートに対して指定します。 +分離ストアを取得したら、データを格納するためのファイルとディレクトリを作成することができます。 ストア内では、ファイル名とディレクトリ名は仮想ファイル システムのルートに対して指定されます。 - ディレクトリを作成するには、インスタンス メソッドです。 存在しないディレクトリのサブディレクトリを指定する場合は、両方のディレクトリが作成されます。 既に存在するディレクトリを指定する場合、メソッドは、ディレクトリを作成することがなくを返し、例外はスローされません。 ただし、ディレクトリ名を指定する場合を含む無効な文字を例外がスローされます。 + ディレクトリを作成するには、 インスタンス メソッドを使用します。 存在しないディレクトリのサブディレクトリを指定した場合、両方のディレクトリが作成されます。 既に存在するディレクトリを指定した場合、メソッドはディレクトリを作成せずに制御を返し、例外はスローされません。 ただし、無効な文字を含むディレクトリ名を指定した場合、 例外がスローされます。 - ファイルを作成するには、メソッドです。 + ファイルを作成するには、 メソッドを使用します。 - Windows オペレーティング システム、分離ストレージ ファイルおよびディレクトリの名前は区別されません。 つまり、という名前のファイルを作成する場合`ThisFile.txt`、という別のファイルを作成および`THISFILE.TXT`、1 つのファイルを作成します。 ファイル名では、表示目的で元の大文字小文字の区別が保持されます。 + Windows オペレーティング システムでは、分離ストレージ ファイルおよびディレクトリの名前の大文字と小文字は区別されません。 つまり、`ThisFile.txt` という名前のファイルを作成してから `THISFILE.TXT` という名前の別のファイルを作成した場合、作成されるのは 1 つのファイルのみです。 ファイル名では、表示目的で元の大文字と小文字の区別が保持されます。 ## 例 - 次のコード例は、分離ストアのファイルとディレクトリを作成する方法を示しています。 + 分離ストア内にファイルおよびディレクトリを作成する方法を次のコード例で示します。 [!code-csharp[Conceptual.IsolatedStorage#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source.cs#1)] [!code-vb[Conceptual.IsolatedStorage#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source.vb#1)] -## 関連項目 +## 参照 [分離ストレージ](../../../docs/standard/io/isolated-storage.md) diff --git a/docs/standard/io/how-to-delete-files-and-directories-in-isolated-storage.md b/docs/standard/io/how-to-delete-files-and-directories-in-isolated-storage.md index 0a1ab057cc8..bd16d13a6d8 100644 --- a/docs/standard/io/how-to-delete-files-and-directories-in-isolated-storage.md +++ b/docs/standard/io/how-to-delete-files-and-directories-in-isolated-storage.md @@ -23,30 +23,33 @@ helpviewer_keywords: - storing data using isolated storage, deleting files and directories - deleting directories within isolated stage file ms.assetid: 8fcc0dea-435b-4d40-ba4d-ba056265c202 -caps.latest.revision: "12" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 971f27cd25cbe4be3ca3fad6283ab32d4f6db0ac -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: cd17b85dbdc9315654d042e18d28fbfd0e2dcc52 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法 : 分離ストレージでファイルおよびディレクトリを削除する -ディレクトリと、分離ストレージ ファイル内のファイルを削除することができます。 ストア内でファイルとディレクトリの名前はオペレーティング システムに依存、仮想ファイル システムのルートに対して相対的に指定されました。 Windows オペレーティング システムで区別することはできません。 +分離ストレージ ファイル内のディレクトリとファイルを削除することができます。 ストア内では、ファイル名とディレクトリ名はオペレーティング システムに依存し、仮想ファイル システムのルートに対して相対的に指定されます。 Windows オペレーティング システムでは大文字小文字は区別されません。 - クラスは、ディレクトリとファイルを削除するための 2 つのメソッドを提供します。:です。 ファイルまたは存在しないディレクトリを削除しようとする場合に例外がスローされます。 名前にワイルドカード文字を含める場合はをスロー、例外、およびをスロー、例外。 + クラスには、 のディレクトリおよびファイルを削除するメソッドが 2 つあります。 存在しないファイルまたはディレクトリを削除しようとする場合、 の例外がスローされます。 名前にワイルドカード文字を含める場合、 の例外をスローし、 の例外をスローします。 - メソッド ディレクトリには、任意のファイルまたはサブディレクトリが含まれている場合は失敗します。 使用することができます、を既存のファイルとディレクトリを取得するメソッド。 ストアの仮想ファイル システムを検索する方法に関する詳細については、次を参照してください。[する方法: 既存のファイルを検索し、分離ストレージ内のディレクトリ](../../../docs/standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md)です。 + ディレクトリにファイルまたはサブディレクトリが含まれている場合、 メソッドは失敗します。 のメソッドを使用すると、既存のファイルとディレクトリを取得することができます。 ストアの仮想ファイル システムを検索する方法の詳細については、「[方法 : 分離ストレージ内でファイルおよびディレクトリを検索する](../../../docs/standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md)」を参照してください。 ## 例 - 次のコード例では、作成し、いくつかのディレクトリとファイルを削除します。 + 次のコード例は、いくつかのディレクトリとファイルを作成して削除します。 [!code-cpp[Conceptual.IsolatedStorage#4](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source4.cpp#4)] [!code-csharp[Conceptual.IsolatedStorage#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source4.cs#4)] [!code-vb[Conceptual.IsolatedStorage#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source4.vb#4)] -## 関連項目 +## 参照 [分離ストレージ](../../../docs/standard/io/isolated-storage.md) diff --git a/docs/standard/io/how-to-delete-stores-in-isolated-storage.md b/docs/standard/io/how-to-delete-stores-in-isolated-storage.md index 64809cf8a4d..d0942901e1f 100644 --- a/docs/standard/io/how-to-delete-stores-in-isolated-storage.md +++ b/docs/standard/io/how-to-delete-stores-in-isolated-storage.md @@ -21,15 +21,18 @@ helpviewer_keywords: - storing data using isolated storage, deleting stores - data storage using isolated storage, deleting stores ms.assetid: 3947e333-5af6-4601-b2f1-24d4d6129cf3 -caps.latest.revision: "14" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 138d1688f22cdc3bfa542af5433b6dbf8139e840 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3ae04deeb8d23b496a9111b0d4b5b68e12ac1439 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法 : 分離ストレージでストアを削除する 分離ストレージ ファイルを削除するため、 クラスは 2 つのメソッドを提供します。 @@ -39,12 +42,12 @@ ms.lasthandoff: 11/21/2017 - 静的メソッド 列挙値を使い、コードを実行するユーザーのすべてのストアを削除します。 この操作を実行するには、 の値に対する アクセス許可が必要です。 ## 例 - 次のコード例は、インスタンスと、静的な使用を示しています。メソッドです。 クラスは、次の 2 つのストアを取得します。1 つは、ユーザーとアセンブリで使うように分離して、もう 1 つは、ユーザー、ドメイン、アセンブリで使うように分離します。 次に、分離ストレージ ファイル の `isoStore1`メソッドを呼び出すことにより、ユーザー、ドメイン、アセンブリのストアが削除されます。 その後、静的メソッド を呼び出すことによって、ユーザーの残りのストアすべてを削除します。 + 静的およびンスタンス メソッドの使い方を次のコード例に示します。 クラスは、次の 2 つのストアを取得します。1 つは、ユーザーとアセンブリで使うように分離して、もう 1 つは、ユーザー、ドメイン、アセンブリで使うように分離します。 次に、分離ストレージ ファイル の `isoStore1`メソッドを呼び出すことにより、ユーザー、ドメイン、アセンブリのストアが削除されます。 その後、静的メソッド を呼び出すことによって、ユーザーの残りのストアすべてを削除します。 [!code-cpp[Conceptual.IsolatedStorage#3](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source3.cpp#3)] [!code-csharp[Conceptual.IsolatedStorage#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source3.cs#3)] [!code-vb[Conceptual.IsolatedStorage#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source3.vb#3)] -## 関連項目 +## 参照 [分離ストレージ](../../../docs/standard/io/isolated-storage.md) diff --git a/docs/standard/io/how-to-enumerate-directories-and-files.md b/docs/standard/io/how-to-enumerate-directories-and-files.md index dfba6ccb05e..b47b5296903 100644 --- a/docs/standard/io/how-to-enumerate-directories-and-files.md +++ b/docs/standard/io/how-to-enumerate-directories-and-files.md @@ -11,65 +11,69 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: I/O [.NET Framework], enumerating directories and files +helpviewer_keywords: +- I/O [.NET Framework], enumerating directories and files ms.assetid: 86b69a08-3bfa-4e5f-b4e1-3b7cb8478215 -caps.latest.revision: "18" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: caf9bdec017a5466269ff7fe97be4d0243035b4a -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 5d0f22853210144881e49c4192ea38a5c3e57cda +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: ディレクトリとファイルを列挙する -ディレクトリとファイル名の文字列の列挙可能なコレクションを返すメソッドを使用して列挙できます。 列挙可能なコレクションを返すメソッドを使用することもできます。 、またはオブジェクト。 列挙可能なコレクションは、ディレクトリおよびファイルの大規模なコレクションを操作する場合、配列よりも優れたパフォーマンスを提供します。 +名前の文字列の列挙可能なコレクションを返すメソッドを使用して、ディレクトリとファイルを列挙することができます。 、または オブジェクトの列挙可能なコレクションを返すメソッドを使用することもできます。 列挙可能なコレクションでは、ディレクトリとファイルの大きなコレクションを操作する際に配列よりも優れたパフォーマンスが得られます。 - 指定するこれらのメソッドから取得した列挙可能なコレクションを使用することができます、などのコレクションのコンス トラクターのパラメーターのクラス、クラスです。 + これらのメソッドから取得される列挙可能なコレクションを使用して、 クラスなどのコレクション クラスのコンストラクターに対して パラメーターを指定することもできます。 - ディレクトリまたはファイルの名前のみを取得する場合は、列挙メソッドを使用して、クラスです。 ディレクトリまたはファイルの他のプロパティを取得する場合は、使用、クラスです。 + ディレクトリまたはファイルの名前のみを取得する場合は、 クラスの列挙メソッドを使用します。 ディレクトリまたはファイルの他のプロパティを取得する場合は、 および クラスを使用します。 - 次の表は、列挙可能なコレクションを返す方法のガイドを提供します。 + 次の表では、列挙コレクションを返すメソッドのガイドを提供します。 -|列挙するには|列挙可能なコレクションを返す|使用する方法| +|列挙対象|返される列挙可能なコレクション|使用するメソッド| |------------------|-------------------------------------|-------------------| |ディレクトリ|ディレクトリ名|| ||ディレクトリ情報 ()|| |ファイル|ファイル名|| -||ファイルの情報 ()|| +||ファイル情報 ()|| |ファイル システム情報|ファイル システム エントリ|| ||ファイル システム情報 ()|| - 使用してすぐに親ディレクトリのサブディレクトリにあるすべてのファイルを列挙できますが、によって提供されるオプションの検索、列挙型、不正アクセス例外 ()、列挙型があります。完了していません。 これらの例外が可能な場合は、例外をキャッチし、最初にディレクトリを列挙して、ファイルを列挙して続行できます。 + 列挙で提供される 検索オプションを使用して、親ディレクトリのサブディレクトリ内のすべてのファイルをすぐに列挙することはできますが、未承認アクセスの例外 () によって、列挙が不完全になる可能性があります。 このような例外が考えられる場合は、その例外をキャッチして作業を続行します。その場合、最初にディレクトリを列挙してからファイルを列挙します。 ### ディレクトリ名を列挙するには -- 使用して、メソッドを指定されたパス内の最上位レベルのディレクトリ名の一覧を取得します。 +- メソッドを使用して、指定されたパスの最上位レベルのディレクトリ名のリストを取得します。 [!code-csharp[System.IO.EnumDirs1#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.enumdirs1/cs/program.cs#1)] [!code-vb[System.IO.EnumDirs1#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.enumdirs1/vb/program.vb#1)] ### ディレクトリとサブディレクトリ内のファイル名を列挙するには -- 使用して、ディレクトリと (必要に応じて) そのサブディレクトリを検索して、指定した検索パターンに一致するファイル名の一覧を取得する方法です。 +- メソッドを使用して、ディレクトリと (必要に応じて) そのサブディレクトリを検索し、指定された検索パターンに一致するファイル名のリストを取得します。 [!code-csharp[System.IO.Directory.EnumerateFiles#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.directory.enumeratefiles/cs/program.cs#1)] [!code-vb[System.IO.Directory.EnumerateFiles#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.directory.enumeratefiles/vb/program.vb#1)] ### DirectoryInfo オブジェクトのコレクションを列挙するには -- 使用して、最上位のディレクトリのコレクションを取得します。 +- メソッドを使用して、最上位レベルのディレクトリのコレクションを取得します。 [!code-csharp[System.IO.DirectoryInfo.EnumDirs#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.directoryinfo.enumdirs/cs/program.cs#1)] [!code-vb[System.IO.DirectoryInfo.EnumDirs#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.directoryinfo.enumdirs/vb/module1.vb#1)] -### すべてのディレクトリに FileInfo オブジェクトのコレクションを列挙するには +### すべてのディレクトリ内の FileInfo オブジェクトのコレクションを列挙するには -- 使用して、すべてのディレクトリ内の指定した検索パターンに一致するファイルのコレクションを取得します。 この例では、まず考えられる不正アクセス例外をキャッチする最上位のディレクトリを列挙し、ファイルを列挙します。 +- メソッドを使用して、すべてのディレクトリ内の指定された検索パターンに一致するファイルのコレクションを取得します。 この例では、まず、最上位レベルのディレクトリを列挙して考えられる未承認アクセス例外をキャッチしてから、ファイルを列挙します。 [!code-csharp[System.IO.DirectoryInfo.EnumerateDirectories#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.directoryinfo.enumeratedirectories/cs/program.cs#1)] [!code-vb[System.IO.DirectoryInfo.EnumerateDirectories#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.directoryinfo.enumeratedirectories/vb/program.vb#1)] -## 関連項目 +## 参照 [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) diff --git a/docs/standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md b/docs/standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md index e49c5f3f91d..1bb8f93ff39 100644 --- a/docs/standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md +++ b/docs/standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md @@ -23,30 +23,33 @@ helpviewer_keywords: - locating directories in isolated storage file - storing data using isolated storage, finding files and directories ms.assetid: eb28458a-6161-4e7a-9ada-30ef93761b5c -caps.latest.revision: "12" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 656c390358b6f6a671cf3ef11ea7be75f897d21c -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 8d460f07e7558fdf9190561b1cac4307767ff245 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法 : 分離ストレージ内でファイルおよびディレクトリを検索する -分離ストレージ内のディレクトリを検索するには、使用、メソッドです。 このメソッドは、検索パターンを表す文字列を受け取ります。 単一文字 (?) と複数文字 (*) の両方を使用する検索パターンでのワイルドカード文字しますが、名前の最後の部分にワイルドカード文字を含める必要があります。 たとえば、`directory1/*ect*`は有効な検索文字列が`*ect*/directory2`はありません。 +分離ストレージ内のディレクトリを検索するには、 メソッドを使用します。 このメソッドは、検索パターンを表す文字列を取得します。 検索パターンでは、1 文字を表すワイルドカード文字 (?) と複数の文字を表すワイルドカード文字 (*) の両方がサポートされています。ただし、これらのワイルドカード文字は、名前の最後の部分で使用する必要があります。 たとえば、`directory1/*ect*` は有効な検索文字列ですが、`*ect*/directory2` は無効です。 - ファイルを検索するには、使用、メソッドです。 適用する検索文字列にワイルドカード文字の制限は、にも適用されますです。 + ファイルを検索するには、 メソッドを使用します。 に適用される、検索文字列内のワイルドカード文字の制約と同じ制約が にも適用されます。 - どちらの方法は、再帰的です。クラスはすべてのディレクトリまたはユーザーのストア内のファイルを一覧表示するためのメソッドを指定していません。 ただし、再帰的な方法は、次のコード例に示します。 + これらはいずれも再帰的メソッドではありません。つまり、 には、ストア内のすべてのディレクトリまたはファイルを一覧表示するためのメソッドは用意されていません。 ただし、次のコード例には、再帰的メソッドの例が含まれています。 ## 例 - 次のコード例は、分離ストアのファイルとディレクトリを作成する方法を示しています。 ユーザー、ドメイン、およびアセンブリの分離されたストアが取得されに最初に、`isoStore`変数。 メソッドを使用して、いくつかの異なるディレクトリを設定し、コンス トラクターは、これらのディレクトリにいくつかのファイルを作成します。 コードがの結果をループ処理し、`GetAllDirectories`メソッドです。 このメソッドを使用してを現在のディレクトリ内のすべてのディレクトリ名を検索します。 これらの名前は、配列に格納し、`GetAllDirectories`呼び出し自体が検出する各ディレクトリに渡します。 その結果、すべてのディレクトリ名は、配列で返されます。 次に、コードを呼び出して、`GetAllFiles`メソッドです。 このメソッドを呼び出す`GetAllDirectories`をすべての名前を調べるには、ディレクトリでは、その後チェック ファイルの各ディレクトリを使用して、メソッドです。 ディスプレイの配列では、結果が返されます。 + 分離ストア内にファイルおよびディレクトリを作成する方法を次のコード例で示します。 最初に、ユーザー、ドメイン、アセンブリ別に分離されたストアを取得し、`isoStore` 変数に格納します。 メソッドは複数の異なるディレクトリをセットアップするために使用され、 コンストラクターではそれらのディレクトリ内にいくつかのファイルを作成します。 次に、`GetAllDirectories` メソッドの結果内をループします。 このメソッドは、 を使用して現在のディレクトリ内のすべてのディレクトリ名を検索します。 これらのディレクトリ名は配列で格納されているので、`GetAllDirectories` は自分自身を呼び出し、検出したそれぞれのディレクトリを渡します。 結果として、すべてのディレクトリ名が配列に返されます。 次に、`GetAllFiles` メソッドが呼び出されます。 このメソッドは、`GetAllDirectories` を呼び出してすべてのディレクトリの名前を検索した後、 メソッドを使用して、各ディレクトリにファイルが存在するかどうかをチェックします。 結果は、表示のために配列で返されます。 [!code-cpp[Conceptual.IsolatedStorage#9](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source8.cpp#9)] [!code-csharp[Conceptual.IsolatedStorage#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source8.cs#9)] [!code-vb[Conceptual.IsolatedStorage#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source8.vb#9)] -## 関連項目 +## 参照 [分離ストレージ](../../../docs/standard/io/isolated-storage.md) diff --git a/docs/standard/io/how-to-obtain-stores-for-isolated-storage.md b/docs/standard/io/how-to-obtain-stores-for-isolated-storage.md index 6b6ed82f309..6c1af3b04e7 100644 --- a/docs/standard/io/how-to-obtain-stores-for-isolated-storage.md +++ b/docs/standard/io/how-to-obtain-stores-for-isolated-storage.md @@ -19,51 +19,54 @@ helpviewer_keywords: - data stores, obtaining - data storage using isolated storage, obtaining stores ms.assetid: fcb6b178-d526-47c4-b029-e946f880f9db -caps.latest.revision: "19" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: bb0b877aa0f4cee36bd1f8c1cea624cf9368fbaa -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 61f183398c3f8c93ead965036e1edeb200dd8cb1 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法 : 分離ストレージでストアを取得する -分離ストアは、データ コンパートメント内の仮想ファイル システムを公開します。 クラスがいくつかの分離ストアと対話するためのメソッドを提供します。 作成し、ストアを取得する3 つの静的メソッドを提供します。 +分離ストアでは、データ コンパートメント内の仮想ファイル システムを公開します。 クラスでは、分離ストアと対話するためのいくつかのメソッドが提供されます。 ストアを作成して取得するために、 では次の 3 つの静的メソッドが提供されます。 -- ユーザーおよびアセンブリによる分離ストレージを返します。 +- は、ユーザーおよびアセンブリ別に分離されるストレージを返します。 -- ドメインとアセンブリが分離される記憶域を返します。 +- は、ドメインおよびアセンブリ別に分離されるストレージを返します。 - 両方のメソッドが呼び出されるコードに属しているストアを取得します。 + 両方のメソッドで、呼び出し元のコードに属するストアが取得されます。 -- 静的メソッドスコープ パラメーターの組み合わせに渡すことで指定されている分離ストアを返します。 +- 静的メソッド は、スコープ パラメーターの組み合わせを渡すことで指定される分離ストアを返します。 - 次のコードでは、ユーザー、アセンブリ、およびドメイン別に分離されたストアを返します。 + 次のコードでは、ユーザー、アセンブリ、およびドメイン別に分離されるストアを返します。 [!code-cpp[Conceptual.IsolatedStorage#6](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source6.cpp#6)] [!code-csharp[Conceptual.IsolatedStorage#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source6.cs#6)] [!code-vb[Conceptual.IsolatedStorage#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source6.vb#6)] - 使用することができます、ローミング ユーザー プロファイルを使用して、ストアを移動することを指定します。 これを設定する方法の詳細については、次を参照してください。[分離のタイプ](../../../docs/standard/io/types-of-isolation.md)です。 + メソッドを使用して、ストアが移動ユーザー プロファイルと共にローミングするように指定することができます。 この設定方法の詳細については、「[分離のタイプ](../../../docs/standard/io/types-of-isolation.md)」を参照してください。 - 別のアセンブリ内から取得される分離ストアは、既定では、異なるストアです。 パラメーターのアセンブリまたはドメインの証拠を渡すことで、別のアセンブリまたはドメインのストアにアクセスすることができます、メソッドです。 これには、アプリケーション ドメインの id を使用して分離ストレージにアクセスする権限が必要です。 詳細については、次を参照してください。、メソッドのオーバー ロードします。 + 異なるアセンブリ内から取得される分離ストアは、既定では異なるストアとなります。 メソッドのパラメーターでアセンブリまたはドメインの証拠を渡すことで、異なるアセンブリまたはドメインのストアにアクセスできます。 この場合、アプリケーション ドメイン ID で分離ストレージにアクセスするアクセス許可が必要になります。 詳細については、 メソッドのオーバーロードに関するページを参照してください。 - 、およびを返し、オブジェクト。 状況に最適などの分離タイプを決定するために、次を参照してください。[分離のタイプ](../../../docs/standard/io/types-of-isolation.md)です。 分離ストレージ ファイル オブジェクトがある場合を読み取り、書き込み、作成、分離ストレージのメソッドを使用して、ファイルおよびディレクトリを削除します。 + 、および メソッドは オブジェクトを返します。 状況に最適な分離タイプの判別に役立つ「[分離のタイプ](../../../docs/standard/io/types-of-isolation.md)」を参照してください。 分離ストレージ ファイル オブジェクトがある場合は、分離ストレージ メソッドを使用して、ファイルとディレクトリの読み取り、書き込み、作成、削除を行うことができます。 - コードに渡すことを防止するためのメカニズムがない、されるコードをオブジェクトには、ストア自体を取得するための十分なアクセスにないです。 参照時にのみドメインとアセンブリの id と分離ストレージのアクセス許可がチェックされて、オブジェクトは、取得したでは通常、 、またはメソッドです。 参照を保護するオブジェクトは、そのため、これらの参照を使用するコードの責任です。 + ストア自体を取得するのに十分なアクセス権がないコードに オブジェクトを渡さないようにするためのメカニズムはありません。 ドメインとアセンブリの ID と分離ストレージのアクセス許可が確認されるのは、通常、、または メソッドで オブジェクトへの参照が取得される場合のみです。 したがって、 への参照を保護するのは、これらの参照を使用するコードの役目です。 ## 例 - 次のコードでは、ユーザーおよびアセンブリ別に分離されたストアを取得するクラスの単純な例を提供します。 追加することでユーザー、ドメイン、およびアセンブリ別に分離されたストアを取得するコードを変更することができます引数にする、メソッドのパス。 + 次のコードでは、ユーザーとアセンブリ別に分離されるストアを取得するクラスの単純な例を示します。 メソッドが渡す引数に を追加することで、ユーザー、ドメイン、およびアセンブリ別に分離されるストアを取得するようにコードを変更できます。 - コードを実行した後、」と入力して、ストアが作成されたことを確認できます**StoreAdm/LIST**コマンドライン。 これにより、実行、[分離ストレージ ツール (Storeadm.exe)](../../../docs/framework/tools/storeadm-exe-isolated-storage-tool.md)し、ユーザーの現在の分離を格納すべて一覧表示します。 + コードを実行したら、コマンド ラインで「**StoreAdm /LIST**」と入力して、ストアが作成されたことを確認することができます。 これにより、[分離ストレージ ツール (Storeadm.exe)](../../../docs/framework/tools/storeadm-exe-isolated-storage-tool.md) が実行され、ユーザーの現在の分離ストアがすべてリストされます。 [!code-cpp[Conceptual.IsolatedStorage#7](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source6.cpp#7)] [!code-csharp[Conceptual.IsolatedStorage#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source6.cs#7)] [!code-vb[Conceptual.IsolatedStorage#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source6.vb#7)] -## 関連項目 +## 参照 [分離ストレージ](../../../docs/standard/io/isolated-storage.md) diff --git a/docs/standard/io/how-to-open-and-append-to-a-log-file.md b/docs/standard/io/how-to-open-and-append-to-a-log-file.md index 3105c90360d..46fdd4124ee 100644 --- a/docs/standard/io/how-to-open-and-append-to-a-log-file.md +++ b/docs/standard/io/how-to-open-and-append-to-a-log-file.md @@ -17,27 +17,30 @@ helpviewer_keywords: - log files, appending to - I/O [.NET Framework], log files ms.assetid: 74423362-1721-49cb-aa0a-e04005f72a06 -caps.latest.revision: "15" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 60c31339231405a1cbbb98dae37d36ad3c3709c1 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 333b20adee4ea2826a1fc6795a39490dca1af843 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法 : ログ ファイルを開いて情報を追加する -およびする文字の書き込みおよびストリームから文字を読み取る。 次のコード例が開き、`log.txt`入力には、ファイルまたはファイルの末尾に情報を追加し、既に存在しない場合は、ファイルを作成します。 ファイルの内容は表示するための標準出力に書き込まれます。 この例を代わりに、情報を 1 つの文字列または文字列の配列として格納でした、またはメソッドは、同じ機能を実現するを使用する可能性があります。 + および は、ストリームから文字の書き込んだり、読み取りを行います。 次のコード例は、入力用に `log.txt` ファイルを開くか、まだファイルがない場合、ファイルを作成し、ファイルの末尾に情報を追加します。 ファイルの内容は、その後表示用に標準出力に書き込まれます。 この例の代わりとして、情報を 1 つの文字列または文字列の配列として格納して、 または メソッドを使用して、同じ機能を実現することができます。 > [!NOTE] -> メソッドおよびプロパティを使用する Visual Basic ユーザーは選択、クラスまたは作成またはログ ファイルに書き込むのためのクラスです。 +> Visual Basic を使用するユーザーは、ログ ファイルの作成またはログ ファイルへの書き込みのために、 クラスまたは クラスによって提供されるメソッドまたはプロパティを使用することを選択できます。 ## 例 [!code-csharp[Conceptual.BasicIO.TextFiles#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.basicio.textfiles/cs/source2.cs#2)] [!code-vb[Conceptual.BasicIO.TextFiles#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.basicio.textfiles/vb/source2.vb#2)] -## 関連項目 +## 参照 diff --git a/docs/standard/io/how-to-read-and-write-to-files-in-isolated-storage.md b/docs/standard/io/how-to-read-and-write-to-files-in-isolated-storage.md index b1b8b1c3aa8..f33c310f98d 100644 --- a/docs/standard/io/how-to-read-and-write-to-files-in-isolated-storage.md +++ b/docs/standard/io/how-to-read-and-write-to-files-in-isolated-storage.md @@ -22,26 +22,29 @@ helpviewer_keywords: - data stores, reading and writing to files - stores, reading and writing to files ms.assetid: f977ebdc-1b55-475a-bc3d-3376470b08ae -caps.latest.revision: "15" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 8d733efc3d70070dd12f55c651033e97d1792c38 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: cfb1500150d2dfb500a698713c0de6b8e5518010 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法 : 分離ストレージ内でファイルの読み取りと書き込みを行う -データの読み取りまたは書き込み、分離ストア内のファイル、使用、ストリーム リーダーを持つオブジェクト (オブジェクト) またはストリーム ライター (オブジェクト)。 +分離ストアのファイルを読み取ったり、それに書き込んだりするには、ストリーム リーダー ( オブジェクト) またはストリーム ライター ( オブジェクト) で オブジェクトを使用します。 ## 例 - 次のコード例では、分離ストアを取得し、TestStore.txt をという名前のファイルが、ストアに存在するかどうかを確認します。 存在しない場合、ファイルが作成され、「こんにちは分離ストレージ」をファイルに書き込みます。 TestStore.txt が既に存在する場合、コード例は、ファイルから読み取ります。 + 次のコード例では、分離ストアを取得し、ストア内に TestStore.txt をという名前のファイルが存在するかどうかが確認されます。 存在しない場合、ファイルが作成され、"Hello Isolated Storage" とファイルに書き込まれます。 TestStore.txt が既に存在する場合、コード例は、ファイルから読み取られます。 [!code-csharp[Conceptual.IsolatedStorage#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source5.cs#5)] [!code-vb[Conceptual.IsolatedStorage#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source5.vb#5)] -## 関連項目 +## 参照 diff --git a/docs/standard/io/how-to-read-characters-from-a-string.md b/docs/standard/io/how-to-read-characters-from-a-string.md index ccd006a2c50..1403a764168 100644 --- a/docs/standard/io/how-to-read-characters-from-a-string.md +++ b/docs/standard/io/how-to-read-characters-from-a-string.md @@ -19,37 +19,40 @@ helpviewer_keywords: - reading data, strings - streams, reading characters from string ms.assetid: 27ea5e52-6db8-42d8-980a-50bcfc7fd270 -caps.latest.revision: "13" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 9116ec63bfc1d12daf7627186a52bd29d5918485 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b8c41350431f49b638c4353e68c9bacded947a1d +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/19/2018 --- # 方法 : 文字列から文字を読み取る -次のコード例では、文字列から同期的および非同期的に文字を読み取る方法を示します。 +次のコード例は、文字列から同期で文字を読み取る方法と非同期で文字を読み取る方法を示しています。 ## 例 - この例では、13 文字、文字列から同期的には、配列に格納し、それらの文字を表示を読み取ります。 文字列内の残りの文字を読み取り、6 番目の要素で開始する配列に格納し、配列の内容を表示します。 + この例では、文字列から同期的に 13 文字を読み取り、配列に格納し、これらの文字を表示します。 次に、文字列の残りの文字を読み取り、6 番目の要素で始まる配列に格納し、配列の内容を表示します。 [!code-cpp[Conceptual.StringReader#1](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.stringreader/cpp/source.cpp#1)] [!code-csharp[Conceptual.StringReader#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.stringreader/cs/source.cs#1)] [!code-vb[Conceptual.StringReader#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.stringreader/vb/source.vb#1)] ## 例 - 次の例は、非同期的にからのすべての文字を読み取り、を制御して、配列に格納します。 これは、後に非同期的に書き込みます各文字または空白文字後に改行を別々 の行に、コントロール。 + 次の例では、 コントロールから非同期的にすべての文字を読み取り、配列に格納します。 次に、 コントロールへの改行が続く個別の行に、各文字または空白文字を非同期的に書き込みます。 [!code-csharp[Conceptual.StringReader#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.stringreader/cs/source2.cs#2)] [!code-vb[Conceptual.StringReader#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.stringreader/vb/source2.vb#2)] -## 関連項目 +## 参照 [非同期ファイル I/O](../../../docs/standard/io/asynchronous-file-i-o.md) - [NIB: 方法: ディレクトリの一覧を作成します。](http://msdn.microsoft.com/en-us/4d2772b1-b991-4532-a8a6-6ef733277e69) + [NIB: 方法: ディレクトリ一覧を作成する](http://msdn.microsoft.com/library/4d2772b1-b991-4532-a8a6-6ef733277e69) [方法: 新しく作成されたデータ ファイルに対して読み書きする](../../../docs/standard/io/how-to-read-and-write-to-a-newly-created-data-file.md) [方法: ログ ファイルを開いて情報を追加する](../../../docs/standard/io/how-to-open-and-append-to-a-log-file.md) [方法: ファイルからテキストを読み取る](../../../docs/standard/io/how-to-read-text-from-a-file.md) diff --git a/docs/standard/io/how-to-read-text-from-a-file.md b/docs/standard/io/how-to-read-text-from-a-file.md index a0b64ebb4a2..9cf7a452685 100644 --- a/docs/standard/io/how-to-read-text-from-a-file.md +++ b/docs/standard/io/how-to-read-text-from-a-file.md @@ -18,20 +18,23 @@ helpviewer_keywords: - data streams, reading text from files - I/O [.NET Framework], reading text from files ms.assetid: ed180baa-dfc6-4c69-a725-46e87edafb27 -caps.latest.revision: "23" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 026f6ae4dd9aee340d6a9ffb931d0525ae75654a -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 6fbf9c910847986af1c02b5848c81266009e2e07 +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/19/2018 --- # 方法 : ファイルからテキストを読み取る 次に、.NET デスクトップ アプリを使用してテキスト ファイルから同期でテキストを読み取る方法と非同期でテキストを読み取る方法の例を示します。 どちらの例でも、 クラスのインスタンスを作成する場合に、ファイルの相対パスまたは絶対パスを指定します。 次の例では、TestFile.txt という名前のファイルがアプリケーションと同じフォルダーにあることを前提とします。 - Windows ランタイムではファイルに対する読み取りと書き込みに別のストリーム型が用意されているため、これらのコード例は Windows ストア アプリの開発には適用されません。 例については、Windows ストア アプリのコンテキスト内のファイルからテキストを読み取る方法を示す、次を参照してください。[クイック スタート: 読み取り/書き込みファイル](http://msdn.microsoft.com/library/windows/apps/hh758325.aspx)です。 .NET Framework ストリームと Windows ランタイム ストリームの間で変換する方法を示す例を参照してください[する方法: .NET Framework ストリームとの間の変換と Windows ランタイム ストリーム](../../../docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md)です。 + Windows ランタイムではファイルに対する読み取りと書き込みに別のストリーム型が用意されているため、これらのコード例は Windows ストア アプリの開発には適用されません。 Windows ストア アプリのコンテキスト内のファイルからテキストを読み取る方法を示す例については、「[クイック スタート: ファイルの読み取りと書き込み](http://msdn.microsoft.com/library/windows/apps/hh758325.aspx)」を参照してください。 .NET Framework ストリームと Windows ランタイム ストリームを変換する方法を示す例は、「[方法: .NET Framework ストリームと Windows ランタイム ストリームの間で変換を行う](../../../docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md)」を参照してください。 ## 例 最初の例では、コンソール アプリケーション内での同期読み取り操作を示します。 この例では、ストリーム リーダーを使用してテキスト ファイルを開き、内容を文字列にコピーして、文字列をコンソールに出力します。 @@ -45,13 +48,13 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.BasicIO.TextFiles#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.basicio.textfiles/cs/source6.cs#6)] [!code-vb[Conceptual.BasicIO.TextFiles#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.basicio.textfiles/vb/source6.vb#6)] -## 関連項目 +## 参照 [非同期ファイル I/O](../../../docs/standard/io/asynchronous-file-i-o.md) - [NIB: 方法: ディレクトリの一覧を作成します。](http://msdn.microsoft.com/en-us/4d2772b1-b991-4532-a8a6-6ef733277e69) - [クイック スタート: 読み書きファイル](http://msdn.microsoft.com/library/windows/apps/hh758325.aspx) + [NIB: 方法: ディレクトリ一覧を作成する](http://msdn.microsoft.com/library/4d2772b1-b991-4532-a8a6-6ef733277e69) + [クイック スタート: ファイルの読み取りと書き込み](http://msdn.microsoft.com/library/windows/apps/hh758325.aspx) [方法: .NET Framework ストリームと Windows ランタイム ストリームの間で変換を行う](../../../docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md) [方法: 新しく作成されたデータ ファイルに対して読み書きする](../../../docs/standard/io/how-to-read-and-write-to-a-newly-created-data-file.md) [方法: ログ ファイルを開いて情報を追加する](../../../docs/standard/io/how-to-open-and-append-to-a-log-file.md) diff --git a/docs/standard/io/memory-mapped-files.md b/docs/standard/io/memory-mapped-files.md index e1cfdaf0a77..09829cd9548 100644 --- a/docs/standard/io/memory-mapped-files.md +++ b/docs/standard/io/memory-mapped-files.md @@ -15,18 +15,21 @@ helpviewer_keywords: - memory-mapped files - inter-process communiation ms.assetid: a483d1b5-64aa-45b6-86ef-11b859f7f02e -caps.latest.revision: "24" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 2602d431aada7b3e0ee226eed319903492022ae9 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 23755f7b76e8cc050df8529852af9bf151472f72 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # メモリ マップト ファイル -メモリ マップト ファイルには、仮想メモリ内のファイルの内容が含まれています。 ファイルとメモリ空間の間のこのマッピングによって、複数のプロセスを含むアプリケーションは、メモリを直接読み書きすることでファイルを変更できます。 以降で、 [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]、マネージ コードを使用するには」の説明に従ってネイティブの Windows 関数がメモリ マップト ファイルにアクセスする同じ方法でメモリ マップト ファイルにアクセスする[win32 Managing Memory-Mapped ファイル](http://go.microsoft.com/fwlink/?linkid=180801)です。 +メモリ マップト ファイルには、仮想メモリ内のファイルの内容が含まれています。 ファイルとメモリ空間の間のこのマッピングによって、複数のプロセスを含むアプリケーションは、メモリを直接読み書きすることでファイルを変更できます。 [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、「[Managing Memory-Mapped Files in Win32](http://go.microsoft.com/fwlink/?linkid=180801)」 (Win32 でのメモリマップ ファイルの管理) で説明されているように、マネージ コードを使用して、ネイティブ Windows 関数がメモリ マップ済みファイルにアクセスする場合と同じ方法でメモリ マップ済みファイルにアクセスできます。 メモリ マップト ファイルには次の 2 種類があります。 @@ -51,7 +54,7 @@ ms.lasthandoff: 10/18/2017 次の図に、複数のプロセスがどのように同じメモリ マップト ファイルへの複数の重なるビューを同時に持つことができるかを示します。 - ![メモリ -にビューを示しています。 マップされているファイル。] (../../../docs/standard/io/media/memmappersisted.png "MemMapPersisted") + ![メモリ マップト ファイルへのビューの表示。] (../../../docs/standard/io/media/memmappersisted.png "MemMapPersisted") メモリ マップト ファイルへの複数の重なるビュー ## メモリ マップト ファイルのプログラミング @@ -82,7 +85,7 @@ ms.lasthandoff: 10/18/2017 メモリ マップト ファイルに新規または変更済みのアクセス規則を適用するには、 メソッドを使用します。 既存のファイルからアクセス規則または監査規則を取得するには、 メソッドを使用します。 -## 例 +## 使用例 ### 永続化メモリ マップト ファイル メソッドは、ディスク上の既存のファイルからメモリ マップト ファイルを作成します。 @@ -151,5 +154,5 @@ Process C says: True [!code-csharp[System.IO.MemoryMappedFiles_IPC_B#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.memorymappedfiles_ipc_b/cs/program.cs#1)] [!code-vb[System.IO.MemoryMappedFiles_IPC_B#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.memorymappedfiles_ipc_b/vb/program.vb#1)] -## 関連項目 +## 参照 [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) diff --git a/docs/standard/io/pipe-operations.md b/docs/standard/io/pipe-operations.md index 311adfc2de7..e46d64539da 100644 --- a/docs/standard/io/pipe-operations.md +++ b/docs/standard/io/pipe-operations.md @@ -14,36 +14,39 @@ helpviewer_keywords: - interprocess communication [.NET Framework], pipes - I/O [.NET Framework], pipes ms.assetid: 7b964ebd-7a4f-4d28-8194-7841f9e4c702 -caps.latest.revision: "8" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 879e5a73417f9347224bc22b397814b83972751c -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 68c1ad34952ee4d20dbf56aa8ca437a3f99db751 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # .NET Framework でのパイプ操作 -パイプは、プロセス間通信の手段を提供します。 パイプの 2 つの種類があります。 +パイプは、プロセス間通信の手段となります。 パイプには、2 種類あります。 -- 匿名パイプします。 +- 匿名パイプ。 - 匿名パイプは、ローカル コンピューターでのプロセス間通信を実現します。 匿名パイプは、名前付きパイプよりもオーバーヘッドは小さくなりますが、限られたサービスを提供します。 匿名パイプは一方向であり、ネットワーク経由で使用することはできません。 1 台のサーバー インスタンスのみをサポートします。 匿名パイプは、スレッド間または場所パイプ ハンドルで簡単に渡すことが子プロセスの作成時に、親と子のプロセス間通信に便利です。 + 匿名パイプは、ローカル コンピューターでのプロセス間通信を実現します。 匿名パイプは、名前付きパイプより必要なオーバーヘッドは少ないですが、提供するサービスは限られています。 匿名パイプは一方向であり、ネットワーク経由で使用することはできません。 これでは、1 つのサーバー インスタンスのみをサポートしています。 匿名パイプは、スレッド間、またはパイプ ハンドルを作成時に子プロセスに簡単に渡すことができる親と子のプロセス間の通信で便利です。 - .NET framework を使用して匿名パイプを実装する、クラスです。 + .NET Framework では、 クラスを使用して匿名パイプを実装します。 - 参照してください[する方法: 匿名パイプを使用して、ローカルのプロセス間通信に](../../../docs/standard/io/how-to-use-anonymous-pipes-for-local-interprocess-communication.md)です。 + 「[方法: ローカルのプロセス間通信で匿名パイプを使用する](../../../docs/standard/io/how-to-use-anonymous-pipes-for-local-interprocess-communication.md)」を参照してください。 - 名前付きパイプ。 - 名前付きパイプは、パイプ サーバーと 1 つ以上のパイプ クライアントとの間でのプロセス間通信を提供します。 名前付きパイプには、一方向または双方向を指定できます。 メッセージ ベースの通信をサポートし、複数のクライアントが同時に同じパイプ名を使用して、サーバー プロセスに接続できます。 名前付きパイプでは、プロセスを接続してリモート サーバーで独自のアクセス許可を使用するには、偽装もサポートします。 + 名前付きパイプは、パイプ サーバーと 1 つ以上のパイプ クライアントとの間でのプロセス間通信を提供します。 名前付きパイプは、一方向であることも、双方向であることも可能です。 これでは、メッセージ ベースの通信がサポートされ、同じパイプ名を使用して複数のクライアントが同時にサーバー プロセスに接続することができます。 名前付きパイプでは、プロセスを接続してリモート サーバーで独自のアクセス許可を使用する、偽装もサポートしています。 - .NET framework を使用して名前付きパイプを実装する、クラスです。 + .NET Framework では、 クラスを使用して名前付きパイプを実装します。 - 参照してください[する方法: ネットワーク プロセス間通信に名前付きパイプを使用して](../../../docs/standard/io/how-to-use-named-pipes-for-network-interprocess-communication.md)です。 + 「[方法: ネットワークのプロセス間通信で名前付きパイプを使用する](../../../docs/standard/io/how-to-use-named-pipes-for-network-interprocess-communication.md)」を参照してください。 -## 関連項目 +## 参照 [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) [方法: ローカルのプロセス間通信で匿名パイプを使用する](../../../docs/standard/io/how-to-use-anonymous-pipes-for-local-interprocess-communication.md) [方法: ネットワークのプロセス間通信で名前付きパイプを使用する](../../../docs/standard/io/how-to-use-named-pipes-for-network-interprocess-communication.md) diff --git a/docs/standard/io/types-of-isolation.md b/docs/standard/io/types-of-isolation.md index a83aefcbd6d..bd515ce2dd7 100644 --- a/docs/standard/io/types-of-isolation.md +++ b/docs/standard/io/types-of-isolation.md @@ -24,58 +24,61 @@ helpviewer_keywords: - isolated storage, types - user authentication, isolated storage ms.assetid: 14812988-473f-44ae-b75f-fd5c2f21fb7b -caps.latest.revision: "16" +caps.latest.revision: author: mairaw ms.author: mairaw manager: wpickett -ms.openlocfilehash: 6b07c090a381925f5330a820214126a121d3790b -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 6a7e9b28601970aecd139d2027bc0ebc73e869fc +ms.sourcegitcommit: 91691981897cf8451033cb01071d8f5d94017f97 ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/09/2018 --- # 分離のタイプ -分離ストレージへのアクセスは、常に作成したユーザーを制限します。 この種の分離を実装するのには、共通言語ランタイムは、これは、コードが実行されているストアが開かれたときに、プロセスに関連付けられた id を同じオペレーティング システムが認識されると、ユーザー id の概念に使用します。 この id は、認証されたユーザー id が、権限借用を動的に変更する現在のユーザーの id が発生することができます。 +分離ストレージへのアクセスは、常にそのストレージを作成したユーザーに限定されます。 この種の分離を実装するために、共通言語ランタイムは、オペレーティング システムが認識するユーザー ID (ストアを開くときにコードが実行しているプロセスに関連付けられた ID) と同じ概念を使用します。 この ID は認証されたユーザーの ID ですが、偽装によって現在のユーザーの ID が動的に変更される可能性があります。 - 分離ストレージへのアクセスは、アプリケーションのドメインとアセンブリ、またはアセンブリだけに関連付けられた id に従って制限もあります。 ランタイムは、次の方法でこれらの id を取得します。 + また、分離ストレージへのアクセスは、アプリケーションのドメインおよびアセンブリ、またはアセンブリのみに関連付けられた ID に従って制限されます。 ランタイムは、以下の方法でこのような ID を取得します。 -- ドメイン id では、可能性のある web アプリケーションの場合、完全な URL と、アプリケーションの証拠を表します。 シェルでホストされているコードでは、ドメイン id がに基づいて、アプリケーションのディレクトリ パス。 C:\Office\MyApp.exe パスから、実行可能ファイルが実行される場合など、ドメイン id では、C:\Office\MyApp.exe になります。 +- ドメイン ID は、アプリケーションの証拠を表します。Web アプリケーションの場合は、完全な URL の可能性があります。 シェルでホストされるコードの場合、ドメイン ID はアプリケーション ディレクトリのパスに基づいている可能性があります。 たとえば、実行可能ファイルが C:\Office\MyApp.exe というパスから実行される場合、ドメイン ID は C:\Office\MyApp.exe になります。 -- アセンブリ id は、アセンブリの証拠です。 アセンブリの可能性がある暗号化デジタル署名から取得できます[厳密な名前](../../../docs/framework/app-domains/strong-named-assemblies.md)のソフトウェア発行元、アセンブリ、またはその URL の id。 厳密な名前とソフトウェアの発行元の id の両方のアセンブリがある、ソフトウェアの発行元 id が使用されます。 アセンブリが、インターネットを起源が署名されていない場合は、URL の id が使用されます。 アセンブリと厳密な名前の詳細については、次を参照してください。[アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md)です。 +- アセンブリ ID はアセンブリの証拠です。 アセンブリ ID は暗号化デジタル署名に由来することがあります。この場合、アセンブリの[厳密な名前](../../../docs/framework/app-domains/strong-named-assemblies.md)、アセンブリのソフトウェア発行元、または URL の ID である可能性があります。 アセンブリに厳密な名前とソフトウェア発行元 ID が両方ともある場合は、ソフトウェア発行元 ID が使用されます。 アセンブリがインターネットから取得され、署名されていない場合は、URL ID が使用されます。 アセンブリおよび厳密な名前の詳細については、「[アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md)」を参照してください。 -- ローミング ストアは、ローミング ユーザー プロファイルを持つユーザーと共に移動します。 ファイルは、ネットワーク ディレクトリに書き込まれ、ユーザーがログインする任意のコンピューターにダウンロードされます。 移動ユーザー プロファイルの詳細については、次を参照してください。です。 +- ローミング ストアは、ローミング ユーザー プロファイルを持つユーザーと共に移動します。 ファイルはネットワーク ディレクトリに書き込まれ、ユーザーがログインする任意のコンピューターにダウンロードされます。 ローミング ユーザー プロファイルの詳細については、「」を参照してください。 - ユーザー、ドメイン、およびアセンブリ id の概念を組み合わせることにより、分離ストレージは、それぞれが独自の用途を持つ次の方法でデータを特定できます。 + 分離ストレージは、ユーザー、ドメイン、アセンブリの ID の概念を組み合わせることで、次のようにそれぞれ独自の使用シナリオを持つ方法でデータを分離できます。 -- [ユーザーおよびアセンブリによる分離](#UserAssembly) +- [ユーザーとアセンブリによる分離](#UserAssembly) -- [ユーザー、ドメイン、およびアセンブリによる分離](#UserDomainAssembly) +- [ユーザー、ドメイン、アセンブリによる分離](#UserDomainAssembly) - これらの分離のいずれかは、移動ユーザー プロファイルと組み合わせることができます。 詳細については、セクションを参照して[分離ストレージとローミング](#Roaming)です。 + これらの分離のいずれかをローミング ユーザー プロファイルと組み合わせることができます。 詳細については、「[分離ストレージとローミング](#Roaming)」セクションを参照してください。 - 次の図は、さまざまなスコープでのストアの分離方法を示します。 + 次の図は、異なるスコープにストアがどのように分離されるかを示しています。 - ![ユーザーおよびアセンブリによる分離](../../../docs/standard/io/media/typesofisolation.gif "typesofisolation") + ![ユーザーおよびアセンブリ別の分離](../../../docs/standard/io/media/typesofisolation.gif "typesofisolation") 分離ストレージの種類 - を除き、ストアを移動するには、分離ストレージは常に暗黙的にコンピューター別に分離は、特定のコンピューターに対してローカルな記憶域機能を使用しているために注意してください。 + 分離ストレージは、ローミング ストアを除き、特定のコンピューターのローカルであるストレージ機能を使用するため、常にコンピューターによって暗黙的に隔離されています。 > [!IMPORTANT] -> 分離ストレージは [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリでは使用できません。 代わりに、 `Windows.Storage` API に含まれる [!INCLUDE[wrt](../../../includes/wrt-md.md)] 名前空間内のアプリケーション データ クラスを使用して、ローカル データとローカル ファイルを格納します。 詳細については、Windows デベロッパー センターの [アプリケーション データ](http://go.microsoft.com/fwlink/?LinkId=229175) に関する説明を参照してください。 +> 分離ストレージは [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリでは使用できません。 代わりに、 `Windows.Storage` API に含まれる [!INCLUDE[wrt](../../../includes/wrt-md.md)] 名前空間内のアプリケーション データ クラスを使用して、ローカル データとローカル ファイルを格納します。 詳細については、Windows デベロッパー センターの[アプリケーション データ](/previous-versions/windows/apps/hh464917(v=win.10))に関する説明を参照してください。 ## ユーザーおよびアセンブリによる分離 - データを使用するアセンブリを格納する任意のアプリケーションのドメインからアクセスできる必要があります、ときにユーザーおよびアセンブリによる分離が適しています。 通常、このような状況では、複数のアプリケーション全体に適用され、ユーザーの名前やライセンス情報など、特定のアプリケーションに関連付けられていないデータを格納する分離ストレージが使用されます。 ユーザーおよびアセンブリ別に分離された記憶域にアクセスするにコードをアプリケーション間で情報を転送するために信頼する必要があります。 通常、ユーザーおよびアセンブリによる分離では、イントラネットではなく、インターネットが許可されます。 静的なを呼び出してメソッドおよびユーザーとアセンブリに渡すことこのような分離ストレージを返します。 + データ ストアを使用するアセンブリにアプリケーションのドメインからアクセスできる必要がある場合は、ユーザーとアセンブリによる分離が適しています。 通常、このような状況では、複数のアプリケーションに適用され、ユーザーの名前やライセンス情報など、特定のアプリケーションには関連付けられないデータを格納するために分離ストレージが使用されます。 ユーザーとアセンブリによって分離されたストレージにアクセスするには、アプリケーション間で情報を転送するためにコードを信頼する必要があります。 通常、ユーザーとアセンブリによる分離はイントラネット上では使用できますが、インターネット上では使用できません。 静的な メソッドを呼び出してユーザーとアセンブリ を渡すと、このような分離のストレージが返されます。 - 次のコード例では、ユーザーおよびアセンブリ別に分離されたストアを取得します。 ストアを介してアクセスできる、`isoFile`オブジェクト。 + 次のコード例では、ユーザーとアセンブリによって分離されたストアを取得します。 このストアには `isoFile` オブジェクトを介してアクセスできます。 [!code-cpp[Conceptual.IsolatedStorage#17](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source11.cpp#17)] [!code-csharp[Conceptual.IsolatedStorage#17](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source11.cs#17)] [!code-vb[Conceptual.IsolatedStorage#17](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source11.vb#17)] - 証拠パラメーターを使用する例は、次を参照してください。です。 + 証拠パラメーターを使用する例については、「」を参照してください。 - メソッドは、次のコード例に示すように、簡単な方法として使用します。 ローミングに対応するストアを開くには、このショートカットを使用できません。使用してこのような場合です。 + メソッドは、次のコード例に示されているようにショートカットとして使用できます。 このショートカットを使用してローミング可能なストアを開くことはできません。その場合は を使用してください。 [!code-cpp[Conceptual.IsolatedStorage#18](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source11.cpp#18)] [!code-csharp[Conceptual.IsolatedStorage#18](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source11.cs#18)] @@ -83,15 +86,15 @@ ms.lasthandoff: 11/21/2017 ## ユーザー、ドメイン、およびアセンブリによる分離 - アプリケーションでは、プライベート データ ストアを必要とするサード パーティ製のアセンブリを使用する場合は、プライベート データを格納する分離ストレージを使用できます。 ユーザー、ドメイン、およびアセンブリによる分離確実にだけで、特定のアセンブリ内のコードは、データにアクセスできるアセンブリが、アセンブリには、ストアが作成されるときに実行されていたアプリケーションで使用される場合にのみと、ストアの作成対象のユーザーが実行時にのみ、 アプリケーション。 ユーザー、ドメイン、およびアセンブリによる分離では、他のアプリケーションへのデータの漏洩からサードパーティ製のアセンブリが保持されます。 この分離型は、分離ストレージを使用するが、不明などの種類の分離を使用することがわかっている場合、既定の選択肢をする必要があります。 呼び出す、静的なメソッドのを渡すユーザー、ドメイン、およびアセンブリとこのような分離ストレージを返します。 + アプリケーションでプライベート データ ストアが必要なサードパーティ アセンブリを使用している場合、プライベート データを格納するために分離ストレージを使用できます。 ユーザー、ドメイン、アセンブリによる分離では、アセンブリがストアを作成したときに実行されていたアプリケーションによってアセンブリが使用されている場合、かつストアが作成されたときのユーザーがアプリケーションを実行した場合にのみ、特定のアセンブリ内のコードのみがデータにアクセスできます。 ユーザー、ドメイン、アセンブリによる分離では、サードパーティのアセンブリから他のアプリケーションにデータが漏えいされません。 分離ストレージを使用したくても、使用する隔離の種類がわからない場合は、この分離方法を既定の選択肢にすることをお勧めします。 の静的な メソッドを呼び出し、ユーザー、ドメイン、およびアセンブリ を渡すと、この種類の分離でストレージが返されます。 - 次のコード例では、ユーザー、ドメイン、およびアセンブリ別に分離されたストアを取得します。 ストアを介してアクセスできる、`isoFile`オブジェクト。 + 次のコード例は、ユーザー、ドメイン、アセンブリによって分離されたストアを取得します。 このストアには `isoFile` オブジェクトを介してアクセスできます。 [!code-cpp[Conceptual.IsolatedStorage#14](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source10.cpp#14)] [!code-csharp[Conceptual.IsolatedStorage#14](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source10.cs#14)] [!code-vb[Conceptual.IsolatedStorage#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source10.vb#14)] - 別の方法を次のコード例に示すように簡単な方法として使用します。 ローミングに対応するストアを開くには、このショートカットを使用できません。使用してこのような場合です。 + 次のコード例に示すように、別のメソッドをショートカットとして使用できます。 このショートカットを使用してローミング可能なストアを開くことはできません。その場合は を使用してください。 [!code-cpp[Conceptual.IsolatedStorage#15](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source10.cpp#15)] [!code-csharp[Conceptual.IsolatedStorage#15](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source10.cs#15)] @@ -99,20 +102,20 @@ ms.lasthandoff: 11/21/2017 ## 分離ストレージとローミング - 移動ユーザー プロファイルは、ユーザーがネットワーク上の id を設定し、その id を使用して、個人用に設定されたすべての設定に実行するすべてのネットワーク コンピューターにログインできるようにする Windows の機能です。 分離ストレージを使用したアセンブリでは、ユーザーの分離ストレージは、ローミング ユーザー プロファイルと移動する必要がありますを指定できます。 ユーザー、ドメイン、およびアセンブリ別、と共に、ユーザーおよびアセンブリによる分離または分離を使用したしてローミングを使用することがことができます。 ローミングのスコープを使用しない場合、ローミング ユーザー プロファイルを使用する場合でもストアは移動しません。 + ローミング ユーザー プロファイルは、ユーザーがネットワーク上で ID を設定し、その ID を使用してネットワーク コンピューターにログインし、すべてのパーソナライズされた設定を実行できる Windows 機能です。 分離ストレージを使用するアセンブリでは、ユーザーの分離ストレージをローミング ユーザー プロファイルと一緒に移動する必要があることを指定できます。 ローミングは、ユーザーとアセンブリによる分離、またはユーザー、ドメイン、アセンブリによる分離と組み合わせて使用​​できます。 ローミング スコープが使用されない場合、ローミング ユーザー プロファイルが使用されていても、ストアはローミングされません。 - 次のコード例では、ユーザーおよびアセンブリ別に分離されたローミング ストアを取得します。 ストアを介してアクセスできる、`isoFile`オブジェクト。 + 次のコード例では、ユーザーとアセンブリによって分離されたローミング ストアを取得します。 このストアには `isoFile` オブジェクトを介してアクセスできます。 [!code-cpp[Conceptual.IsolatedStorage#11](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source9.cpp#11)] [!code-csharp[Conceptual.IsolatedStorage#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source9.cs#11)] [!code-vb[Conceptual.IsolatedStorage#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source9.vb#11)] - ユーザー、ドメイン、およびアプリケーション別に分離されたローミング ストアを作成するのには、ドメイン スコープを追加できます。 次のコード例を示します。 + ドメイン スコープを追加すると、ユーザー、ドメイン、およびアプリケーションによって分離されたローミング ストアを作成できます。 次のコード例はこの処理方法を示しています。 [!code-cpp[Conceptual.IsolatedStorage#12](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source9.cpp#12)] [!code-csharp[Conceptual.IsolatedStorage#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source9.cs#12)] [!code-vb[Conceptual.IsolatedStorage#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source9.vb#12)] -## 関連項目 +## 参照 [分離ストレージ](../../../docs/standard/io/isolated-storage.md) diff --git a/docs/standard/language-independence-and-language-independent-components.md b/docs/standard/language-independence-and-language-independent-components.md index 13139ee0234..bf80017377f 100644 --- a/docs/standard/language-independence-and-language-independent-components.md +++ b/docs/standard/language-independence-and-language-independent-components.md @@ -19,15 +19,18 @@ helpviewer_keywords: - runtime, language interoperability - common language runtime, language interoperability ms.assetid: 4f0b77d0-4844-464f-af73-6e06bedeafc6 -caps.latest.revision: "35" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: bc43226a508dfd0286c7667c02bdc2543346be9c -ms.sourcegitcommit: 9c4b8d457ffb8d134c9d55c6d7682a0f22e2b9a8 +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: ec6f7df4cc42b71ab9c61e84b71a81f641a1d0b3 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/20/2017 +ms.lasthandoff: 12/23/2017 --- # 言語への非依存性、および言語非依存コンポーネント .NET Framework は言語に依存しません。 つまり、C++/CLI、Eiffel、F#、IronPython、IronRuby、PowerBuilder、Visual Basic、Visual COBOL、Windows PowerShell など、.NET Framework を対象とする多くの言語の 1 つを開発に使用できます。 .NET Framework 用に開発されたクラス ライブラリの型とメンバーには、最初に記述された言語を知らなくてもアクセスできます。元の言語の規則に従う必要もありません。 コンポーネントを開発しているのであれば、コンポーネントの言語にかかわらず、すべての .NET Framework アプリからそのコンポーネントにアクセスできます。 @@ -109,7 +112,7 @@ ms.lasthandoff: 10/20/2017 CLS 準拠の規則を次の表に示します。 この規則は、「[ECMA-335 Standard: Common Language Infrastructure](http://go.microsoft.com/fwlink/?LinkID=116487)」(標準の ECMA-335: 共通言語基盤) からの引用で、Ecma International が 2012 年の著作権を保有しています。 これらの規則の詳細については、以降のセクションを参照してください。 -|カテゴリ|参照トピック|ルール|規則番号| +|カテゴリ|解決方法については、|ルール|規則番号| |--------------|---------|----------|-----------------| |ユーザー補助|[メンバーのアクセシビリティ](#MemberAccess)|継承されたメソッドをオーバーライドする場合、アクセシビリティは変更してはいけない。ただし、別のアセンブリから継承されたメソッドをアクセシビリティ `family-or-assembly` でオーバーライドする場合は除く。 この場合、アクセシビリティは `family` にすること。|10| |ユーザー補助|[メンバーのアクセシビリティ](#MemberAccess)|型およびメンバーの可視性およびアクセシビリティについて、メンバーのシグネチャに指定されている型は、そのメンバーが可視でアクセス可能な場合、必ず可視でアクセス可能でなければいけない。 たとえば、アセンブリ外部から参照できるパブリックなメソッドには、アセンブリ内部でだけ可視である型が引数として含まれていてはいけない。 メンバーのシグネチャに使用されているジェネリック型のインスタンスを構成する型の可視性およびアクセシビリティは、メンバーが可視でアクセス可能の場合、必ず可視でアクセス可能でなければいけない。 たとえば、アセンブリ外部から参照できるメンバーのシグネチャに指定されているジェネリック型のインスタンスに、アセンブリ内部でだけ可視である型の汎用引数が含まれていてはいけない。|12| @@ -119,9 +122,9 @@ ms.lasthandoff: 10/20/2017 |属性|[属性](#attributes)|CLS では、公開参照される必須の修飾子 (`modreq`、第 2 部を参照) は使用できない。ただし、認識しないオプションの修飾子 (`modopt`、第 2 部を参照) は使用できる。|35| |コンストラクター|[コンストラクター](#ctors)|オブジェクト コンストラクターでは、継承しているインスタンス データへのアクセスが発生する前に、基底クラスのインスタンス コンストラクターを呼び出さなければいけない (コンストラクターが不要である値型は除く)。|21| |コンストラクター|[コンストラクター](#ctors)|オブジェクト コンストラクターがオブジェクトの作成時以外で呼び出されてはならず、またオブジェクトが 2 度初期化されてもいけない。|22| -|列挙型|[列挙型](#enums)|enum の基になる型は組み込みの CLS 整数型、フィールド名は "value__" であり、そのフィールドには `RTSpecialName` のマークが付けられる。|7| -|列挙型|[列挙型](#enums)|enum には 2 種類あり、 カスタム属性 (第 4 部のライブラリを参照) の有無で区別する。 片方は名前付き整数値を表し、もう片方は名前付きビット フラグを表す。名前付きビット フラグは、それを組み合わせて名前のない値を生成できる。 `enum` の値は、指定した値に限定されない。|9| -|列挙型|[列挙型](#enums)|enum のリテラルな静的フィールドの型は、その enum 自体の型である。|9| +|列挙|[列挙型](#enums)|enum の基になる型は組み込みの CLS 整数型、フィールド名は "value__" であり、そのフィールドには `RTSpecialName` のマークが付けられる。|7| +|列挙型|[列挙型](#enums)|enum には 2 種類あり、 カスタム属性 (第 4 部のライブラリを参照) の有無で区別する。 片方は名前付き整数値を表し、もう片方は名前付きビット フラグを表す。名前付きビット フラグは、それを組み合わせて名前のない値を生成できる。 `enum` の値は、指定した値に限定されない。|8| +|列挙|[列挙型](#enums)|enum のリテラルな静的フィールドの型は、その enum 自体の型である。|9| |イベント|[イベント](#events)|イベントを実装するメソッドは、メタデータ内で `SpecialName` のマークが付けられる。|29| |イベント|[イベント](#events)|イベントとイベントのアクセサーのアクセシビリティは同一である。|30| |イベント|[イベント](#events)|イベントの `add` メソッドおよび `remove` メソッドは、どちらもあってもなくてもよい。|31| @@ -318,7 +321,7 @@ ms.lasthandoff: 10/20/2017 [!code-vb[Conceptual.CLSCompliant#24](../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.clscompliant/vb/eii1.vb#24)] -### 列挙体 +### 列挙 CLS 準拠の列挙型は、次の規則に従う必要があります。 - 列挙体の基になる型は、組み込みの CLS 準拠の整数 (、または ) である必要があります。 たとえば、次のコードでは、基になる型が の列挙体を定義しようとしますが、コンパイラの警告が生成されます。 @@ -512,7 +515,7 @@ ms.lasthandoff: 10/20/2017 - コンポーネント ライブラリのパブリック インターフェイスが CLS に準拠するプログラム要素のみを公開するように保証する。 要素が CLS 非準拠の場合は、通常、警告が表示されます。 > [!WARNING] -> 言語コンパイラでは、 属性が使用されているかどうかに関係なく、CLS 準拠の規則が適用される場合があります。 たとえば、インターフェイスの静的メンバーを定義すると CLS の規則に違反します。 この関係なく、定義した場合に、 `static` (C# の場合) または`Shared`(Visual Basic) のインターフェイスのメンバーは、両方、c# および Visual Basic コンパイラ エラー メッセージが表示され、アプリのコンパイルに失敗します。 +> 言語コンパイラでは、 属性が使用されているかどうかに関係なく、CLS 準拠の規則が適用される場合があります。 たとえば、インターフェイスの静的メンバーを定義すると CLS の規則に違反します。 この点に関して、インターフェイスで `static` メンバー (C# の場合) または `Shared` メンバー (Visual Basic の場合) を定義すると、C# と Visual Basic の両方のコンパイラでエラー メッセージが表示され、アプリはコンパイルされません。 属性は、値 が指定された 属性でマークされます。 この値を使用すると、 属性を、アセンブリ、モジュール、型 (クラス、構造体、列挙体、インターフェイス、およびデリゲート)、型パラメーター (コンストラクター、メソッド、プロパティ、フィールド、およびイベント)、パラメーター、ジェネリック パラメーター、戻り値など、すべてのプログラム要素に適用できます。 ただし、実際は、アセンブリ、型、および型メンバーだけに属性を適用することをお勧めします。 そうしないと、属性は、コンパイラによってライブラリのパブリック インターフェイスで非準拠パラメーター、ジェネリック パラメーター、または戻り値が検出されたときに必ず無視され、コンパイラ警告が引き続き生成されます。 @@ -592,5 +595,5 @@ vbc example.vb /r:UtilityLib.dll csc example.cs /r:UtilityLib.dll ``` -## 関連項目 +## 参照 diff --git a/docs/standard/native-interop.md b/docs/standard/native-interop.md index a449e326467..44806559a23 100644 --- a/docs/standard/native-interop.md +++ b/docs/standard/native-interop.md @@ -10,11 +10,14 @@ ms.prod: .net ms.technology: dotnet-standard ms.devlang: dotnet ms.assetid: 3c357112-35fb-44ba-a07b-6a1c140370ac -ms.openlocfilehash: 9652986491f087b8fa175e2b4041063c71211178 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 11a93f4014734130f7c4e33cf215c6d49d2554c5 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # ネイティブ相互運用性 @@ -71,7 +74,7 @@ using System.Runtime.InteropServices; namespace PInvokeSamples { public static class Program { - // Import the libc and define the method corresponding to the native function. + // Import the libSystem shared library and define the method corresponding to the native function. [DllImport("libSystem.dylib")] private static extern int getpid(); @@ -84,7 +87,7 @@ namespace PInvokeSamples { } ``` -これはもちろん Linux でも似ています。 `getpid(2)` は [POSIX](https://en.wikipedia.org/wiki/POSIX) システム コールであるため、関数名が同じです。 +これは Linux でも同様です。 `getpid(2)` は標準的な [POSIX](https://en.wikipedia.org/wiki/POSIX) システム コールであるため、関数名が同じです。 ```csharp using System; @@ -93,7 +96,7 @@ using System.Runtime.InteropServices; namespace PInvokeSamples { public static class Program { - // Import the libc and define the method corresponding to the native function. + // Import the libc shared library and define the method corresponding to the native function. [DllImport("libc.so.6")] private static extern int getpid(); @@ -263,7 +266,7 @@ namespace PInvokeSamples { **マーシャ リング**はマネージの境界を越えてネイティブに、またはその逆の必要がある場合に、型を変換するプロセスです。 -マーシャリングが必要な理由は、マネージ コードとアンマネージ コード内の型が異なるためです。 マネージ コードで、たとえば、`String` があるとします。アンマネージ環境では、文字列は Unicode ("ワイド")、Unicode 以外、Null 終了、ASCII などです。既定で、P/Invoke サブシステムは既定の動作に基づいて "正しいこと" をしようと試みますが、それらについては [MSDN](https://msdn.microsoft.com/library/zah6xy75.aspx) で確認できます。 ただし、特別な制御が必要な場合、`MarshalAs` 属性を採用して、アンマネージ側で期待する型を指定します。 たとえば、文字列を NULL で終わる ANSI 文字列として送信させる場合は、次のように指定できます。 +マーシャリングが必要な理由は、マネージ コードとアンマネージ コード内の型が異なるためです。 マネージ コードで、たとえば、`String` があるとします。アンマネージ環境では、文字列は Unicode ("ワイド")、Unicode 以外、Null 終了、ASCII などです。既定で、P/Invoke サブシステムは既定の動作に基づいて "正しいこと" をしようと試みますが、それらについては [MSDN](../../docs/framework/interop/default-marshaling-behavior.md) で確認できます。 ただし、特別な制御が必要な場合、`MarshalAs` 属性を採用して、アンマネージ側で期待する型を指定します。 たとえば、文字列を NULL で終わる ANSI 文字列として送信させる場合は、次のように指定できます。 ```csharp [DllImport("somenativelibrary.dll")] diff --git a/docs/standard/parallel-programming/attached-and-detached-child-tasks.md b/docs/standard/parallel-programming/attached-and-detached-child-tasks.md index ba5c9da3511..9f7be3ead1e 100644 --- a/docs/standard/parallel-programming/attached-and-detached-child-tasks.md +++ b/docs/standard/parallel-programming/attached-and-detached-child-tasks.md @@ -11,28 +11,32 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, child tasks +helpviewer_keywords: +- tasks, child tasks ms.assetid: c95788bf-90a6-4e96-b7bc-58e36a228cc5 -caps.latest.revision: "21" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: c1a0c664dffc2986d4d6985fd2b71cd8055bf2c9 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 298ccdc4628c840874d10832da29c10d6d496655 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # アタッチされた子タスクとデタッチされた子タスク -A*子タスク*(または*入れ子になったタスク*) は、と呼ばれる別のタスクのユーザー デリゲートで作成されるインスタンス、*親タスク*です。 子タスクはデタッチまたはアタッチできます。 A*デタッチされた子タスク*がその親と独立して実行されるタスクです。 *アタッチされた子タスク*で作成される入れ子のタスクは、オプションがその親は明示的にも既定を禁止していないことが関連付けられているからです。 タスクでは、システム リソースが許す限り、任意の数のアタッチされた子タスクおよびデタッチされた子タスクを作成できます。 +*子タスク* (または*入れ子のタスク*) は、*親タスク* と呼ばれる、別のタスクのユーザー デリゲートで作成された、 のインスタンスです。 子タスクはデタッチまたはアタッチできます。 *デタッチされた子タスク* は、親とは独立して実行されるタスクです。 *アタッチされた子タスク* は、 オプションで作成される入れ子のタスクです。その親は、明示的にも既定でも、子タスクがアタッチされることを禁止しません。 タスクでは、システム リソースが許す限り、任意の数のアタッチされた子タスクおよびデタッチされた子タスクを作成できます。 以下の表に、2 種類の子タスクの基本的な相違点を示します。 |カテゴリ|デタッチされた子タスク|アタッチされた子タスク| |--------------|--------------------------|--------------------------| -|親は子タスクが完了するまで待機します。|いいえ|はい| -|親は子タスクによってスローされた例外を反映します。|いいえ|はい| -|親のステータスは子のステータスに依存します。|いいえ|はい| +|親は子タスクが完了するまで待機します。|×|[はい]| +|親は子タスクによってスローされた例外を反映します。|×|[はい]| +|親のステータスは子のステータスに依存します。|×|[はい]| ほとんどの場合、デタッチされた子タスクを使用することをお勧めします。他のタスクとの関係は複雑度が低いためです。 こうした理由から、既定では親タスク内に作成されたタスクはデタッチされており、アタッチされた子タスクを作成する場合は オプションを明示的に指定する必要があります。 @@ -67,7 +71,7 @@ A*子タスク*(または*入れ子になったタスク*) は、親が取り消された場合 - 子タスクが開始される前に親が取り消された場合、子は開始されません。 子タスクが既に開始された後に親が取り消された場合、子はそれ自体にキャンセル ロジックが適用されていない限り、完了まで実行されます。 詳細については、「 [Task Cancellation](../../../docs/standard/parallel-programming/task-cancellation.md)」を参照してください。 + 子タスクが開始される前に親が取り消された場合、子は開始されません。 子タスクが既に開始された後に親が取り消された場合、子はそれ自体にキャンセル ロジックが適用されていない限り、完了まで実行されます。 詳細については、「[タスクのキャンセル](../../../docs/standard/parallel-programming/task-cancellation.md)」をご覧ください。 ### デタッチされた子タスクが取り消された場合 デタッチされた子タスクが、そのタ親に渡されたのと同じトークンを使用して取り消された場合、親は子タスクを待機せず、例外も反映されません。例外は、他の処理と連携したキャセル処理として扱われるためです。 この動作は最上位のタスクと同じです。 @@ -82,8 +86,8 @@ A*子タスク*(または*入れ子になったタスク*) は、 または オブジェクトを作成するときに、 オプションを指定します。 タスクがその親にアタッチしようとし、親が オプションを指定する場合、子タスクは親にアタッチされず、 オプションが指定されなかったかのように実行されます。 - 子タスクが適時に完了しない場合には、子タスクがその親にアタッチしないようにすることをお勧めします。 親タスクは、すべての子タスクが終了するまで完了しないため、長時間実行される子タスクによって、アプリケーション全体のパフォーマンスの低下を生じる場合があります。 例でタスクが親タスクにアタッチされないようにするアプリのパフォーマンスを向上させる方法については、次を参照してください。[する方法: 親からのアタッチされた子タスクを防ぐため](../../../docs/standard/parallel-programming/how-to-prevent-a-child-task-from-attaching-to-its-parent.md)です。 + 子タスクが適時に完了しない場合には、子タスクがその親にアタッチしないようにすることをお勧めします。 親タスクは、すべての子タスクが終了するまで完了しないため、長時間実行される子タスクによって、アプリケーション全体のパフォーマンスの低下を生じる場合があります。 タスクがその親タスクにアタッチしないようにすることにより、アプリケーションのパフォーマンスを向上させる方法の例については、「[方法: 子タスクがその親にアタッチしないようにする](../../../docs/standard/parallel-programming/how-to-prevent-a-child-task-from-attaching-to-its-parent.md)」を参照してください。 -## 関連項目 +## 参照 [並列プログラミング](../../../docs/standard/parallel-programming/index.md) [データの並列化](../../../docs/standard/parallel-programming/data-parallelism-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md b/docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md index ebc0c3c5c30..bb157f12a29 100644 --- a/docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md +++ b/docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md @@ -11,17 +11,21 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, continuations +helpviewer_keywords: +- tasks, continuations ms.assetid: 0b45e9a2-de28-46ce-8212-1817280ed42d -caps.latest.revision: "30" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 7037e0c91ee6ae83b70d6a26e72b87095456063b -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b8e21c338648d5925c8576f76dae3aae43a9ca0d +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/19/2018 --- # 継続タスクを使用したタスクの連結 非同期プログラミングでは、非同期操作で完了時に 2 番目の操作を呼び出してデータを渡すのが一般的です。 これまで、この処理はコールバック メソッドを使用して行っていました。 タスク並列ライブラリでは、 *継続タスク*に同じ機能が用意されています。 継続タスク (単に "継続" とも呼ばれます) とは、別のタスク (" *継続元*" と呼ばれます) が終了したときにそのタスクによって呼び出される非同期タスクのことです。 @@ -58,7 +62,7 @@ ms.lasthandoff: 10/18/2017 ## 複数の継続元に対する継続の作成 タスク グループの一部または全部のタスクが完了したときに実行される継続を作成することもできます。 すべての継続元タスクが完了した時点で継続を実行するには、静的 (Visual Basic では `Shared`) メソッドまたはインスタンス メソッドを呼び出します。 いずれかの継続元タスクが完了した時点で継続を実行するには、静的 (Visual Basic では `Shared`) メソッドまたはインスタンス メソッドを呼び出します。 - 呼び出す、オーバー ロードが呼び出し元のスレッドをブロックされません。 ただし、通常を呼び出す以外のすべての、返されたを取得するメソッドプロパティで、呼び出し元のスレッドがブロックされます。 + および オーバーロードの呼び出しによって、呼び出しスレッドがブロックされることはない点に注意してください。 ただし、通常、返された プロパティを取得するために メソッドと メソッドを除いたすべてを呼び出しますが、そうした場合は呼び出しスレッドがブロックされます。 次の例では、 メソッドを呼び出し、10 個の継続元タスクの結果を反映する継続タスクを作成します。 各継続元タスクは、1 から 10 までの範囲内のインデックス値を二乗します。 継続元が正常に完了すると (その プロパティが )、継続の プロパティは、各継続元から返される 値の配列になります。 この例では、1 から 10 までのすべての数値の二乗の合計を計算するため、これらを追加します。 @@ -124,7 +128,7 @@ ms.lasthandoff: 10/18/2017 ## 状態と継続の関連付け 任意の状態とタスクの継続を関連付けることができます。 メソッドは、それぞれが継続の状態を表す 値を受け取る、オーバーロードされたバージョンを提供します。 後でこの状態オブジェクトにアクセスするには、 プロパティを使用します。 値を指定しない場合、この状態オブジェクトは `null` です。 - 継続の状態は、TPL を使用するために、 [非同期プログラミング モデル (APM)](../../../docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md) を使った既存のコードを変換する場合に有用です。 Apm で通常指定するオブジェクトの状態で、 **開始*メソッド** * メソッドと、その状態を使用して後でアクセスできる、プロパティです。 メソッドを使用すると、APM を使用するコードを TPL を使用するように変換するときに、この状態を維持できます。 + 継続の状態は、TPL を使用するために、 [非同期プログラミング モデル (APM)](../../../docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md) を使った既存のコードを変換する場合に有用です。 APM では通常、**Begin***Method* メソッドでオブジェクト状態を指定し、後から プロパティを使って、その状態にアクセスします。 メソッドを使用すると、APM を使用するコードを TPL を使用するように変換するときに、この状態を維持できます。 継続の状態は、 デバッガーで [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] オブジェクトを使用するときにも有用です。 たとえば、 **[並列タスク]** ウィンドウの **[タスク]** の列に、各タスクの状態オブジェクトの文字列表現が表示されます。 **[並列タスク]** ウィンドウの詳細については、「[[タスク] ウィンドウの使用](/visualstudio/debugger/using-the-tasks-window)」を参照してください。 @@ -151,9 +155,9 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPL_Continuations#11](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_continuations/cs/exception2.cs#11)] [!code-vb[TPL_Continuations#11](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_continuations/vb/exception2.vb#11)] - 詳細については、「[例外処理](../../../docs/standard/parallel-programming/exception-handling-task-parallel-library.md)」および「[NIB: 方法: タスクがスローした例外を処理する](http://msdn.microsoft.com/en-us/d6c47ec8-9de9-4880-beb3-ff19ae51565d)」を参照してください。 + 詳細については、「[例外処理](../../../docs/standard/parallel-programming/exception-handling-task-parallel-library.md)」および「[NIB: 方法: タスクがスローした例外を処理する](http://msdn.microsoft.com/library/d6c47ec8-9de9-4880-beb3-ff19ae51565d)」を参照してください。 - アタッチされた子タスクで、 オプションを使用して継続が作成された場合、アタッチされているその他の子と同様、その例外は親によって呼び出し元のスレッドに反映されます。 詳細については、「[アタッチされた子タスクとデタッチされた子タスク](../../../docs/standard/parallel-programming/attached-and-detached-child-tasks.md)」を参照してください。 -## 関連項目 +## 参照 [タスク並列ライブラリ (TPL)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md) diff --git a/docs/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl.md b/docs/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl.md index 556555747d5..1c548131c92 100644 --- a/docs/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl.md +++ b/docs/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl.md @@ -11,122 +11,126 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, partitioners +helpviewer_keywords: +- tasks, partitioners ms.assetid: 96153688-9a01-47c4-8430-909cee9a2887 -caps.latest.revision: "19" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 12d234b86b0067178d54d2fdcb5d37ceaee6109d -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: bc409a528dd095d3defb0026a48430b10a3ba6f3 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # PLINQ および TPL 用のカスタム パーティショナー -データ ソースでの操作を並列化の重要な手順のいずれかを*パーティション*ソースを複数のセクションでは複数のスレッドで同時にアクセスできます。 PLINQ およびタスク並列ライブラリ (TPL) は、並列クエリを記述する場合に透過的に機能する既定のパーティションを提供またはループします。 高度なシナリオは、独自のパーティショナーで接続できます。 +データ ソース上で操作を並列化する場合の必須の手順の 1 つは、ソースを複数のスレッドによって同時にアクセスできる複数のセクションに*パーティション分割*することです。 PLINQ およびタスク並列ライブラリ (TPL: Task Parallel Library) には、並列クエリまたは ループを記述するときに透過的に機能する既定のパーティショナーが用意されています。 より高度なシナリオでは、独自のパーティショナーをプラグインできます。 ## パーティション分割の種類 - さまざまな方法でデータ ソースのパーティションがあります。 複数のスレッドが複数のサブシーケンスにソースを物理的に分離するのではなく、プロセス、元のソース シーケンスに連携して、最も効率的な方法では、します。 配列、およびその他のインデックス化されたソースなどコレクションの長さがあらかじめわかっている*範囲パーティション分割*は最も単純な種類のパーティション分割します。 すべてのスレッドでは、ソースの範囲を上書きするか、他のスレッドによって上書きされることがなく処理できるように一意の開始と終了時刻、インデックスを受け取ります。 範囲パーティション分割に関連するオーバーヘッドが初期の作業の範囲を作成します。追加の同期は必要ありませんにします。 そのため、作業負荷が均等に限り、良好なパフォーマンスを実現できます。 範囲パーティション分割の欠点は、1 つのスレッドが早く終了した場合は、他のスレッドの作業を完了を支援ことできませんです。 + データ ソースは、さまざまな方法でパーティション分割できます。 最も効率的な方法は、ソースを複数のサブシーケンスに物理的に分離するのではなく、複数のスレッドが協調して元のソース シーケンスを処理するというものです。 配列や、長さが事前にわかっている コレクションなどの他のインデックス付きソースの場合は、"*範囲パーティション分割*" が最も簡単なパーティション分割です。 各スレッドは、一意の開始インデックスおよび終了インデックスを受け取ります。そのため、他のスレッドで上書きしたり、上書きされたりすることなく、ソースの範囲を処理できます。 範囲パーティション分割に必要なオーバーヘッドは、最初に行われる範囲を作成する作業のみです。その後は、追加の同期は不要です。 したがって、ワークロードが均等に分割されている限り、優れたパフォーマンスを実現できます。 範囲パーティション分割の欠点は、あるスレッドが早く終了した場合、他のスレッドが作業を終了するのを支援できないことです。 - リンク リストまたは他のコレクションの長さが不明の場合は、使用することができます*チャンクがパーティション分割*です。 チャンクがパーティション分割のすべてのスレッドまたはタスクを並列ループまたはクエリでいくつかの 1 つのチャンクでソース要素を使用、それらを処理返ってくると、追加の要素を取得します。 パーティショナーは、すべての要素が分散されると、重複がないようにします。 チャンクのサイズがあります。 説明されているパーティショナーなど[する方法: 実装の動的なパーティション](../../../docs/standard/parallel-programming/how-to-implement-dynamic-partitions.md)1 つだけの要素が含まれているチャンクを作成します。 チャンクが大きすぎていない限り、この種類のパーティション分割は本質的に負荷分散のスレッドに要素の割り当てがあらかじめ決定されないためです。 ただし、パーティショナーはオーバーヘッドが増加する、同期、スレッドが別のチャンクを取得するたびにします。 このような場合に発生する同期の量は、チャンクのサイズに反比例します。 + リンク リストまたは長さがわからない他のコレクションの場合は、"*チャンク パーティション分割*" を使用できます。 チャンク パーティション分割では、並列ループまたは並列クエリ内のすべてのスレッドまたはタスクが、1 つのチャンク内のソース要素をいくつか使用し、それらのソース要素を処理し、その後追加の要素を取得します。 パーティショナーは、すべての要素が配布され、重複する要素が存在しないことを保証します。 チャンクは任意のサイズにすることができます。 たとえば、「[方法: 動的パーティションを実装する](../../../docs/standard/parallel-programming/how-to-implement-dynamic-partitions.md)」で示されているパーティショナーは、1 つの要素のみを含むチャンクを作成します。 チャンクが大きすぎない限り、この種類のパーティション分割は、本質的に負荷分散を実行します。これは、スレッドへの要素の割り当てが事前に決定されないからです。 ただし、スレッドが別のチャンクを取得する必要があるたびに、パーティショナーが同期のオーバーヘッドを発生させます。 これらのケースで発生する同期の量は、チャンクのサイズに反比例します。 - 一般に、range パーティション分割は高速な場合にのみ、デリゲートの実行時間な小規模から中、ソースが多数の要素、および各パーティションの合計作業時間はほぼ同等です。 チャンクがパーティション分割は、ほとんどの場合、一般に高速ではこのためです。 少数の要素またはデリゲートの実行時間が長いと、ソース、チャンクと範囲パーティション分割のパフォーマンスはほぼ同じです。 + 一般に、範囲パーティション分割の方が高速なのは、デリゲートの実行時間が短時間から中程度までの長さであり、ソースに多数の要素があり、かつ各パーティションの総作業量がほぼ等価である場合のみです。 したがってチャンク パーティション分割の方が、ほとんどのケースで高速です。 要素が少ないか、またはデリゲートの実行時間が長いソースでは、チャンク パーティション分割と範囲パーティション分割のパフォーマンスがほぼ等しくなります。 - TPL パーティショナーでは、パーティションの数が動的もサポートします。 つまり、たとえばパーティション上の実行時を作成できる場合、ループは新しいタスクを生成します。 この機能は、ループ自体と共にスケール パーティショナーを使用します。 動的パーティショナーも本質的に負荷分散できます。 カスタム パーティショナーを作成するときにから使用できるようにする動的なパーティショニングをサポートする必要があります、ループします。 + TPL パーティショナーは、動的な数のパーティションもサポートします。 つまり、たとえば ループが新しいタスクを作成するときに、パーティションをその場で作成できます。 この機能により、パーティショナーをループ自体と共に拡大縮小できます。 動的パーティショナーも本質的に負荷分散を実行します。 カスタム パーティショナーを作成するときは、 ループから使用できるようにするために、動的パーティション分割をサポートする必要があります。 -### 負荷分散の PLINQ パーティショナーを構成します。 - 一部のオーバー ロード、メソッドでは、配列の場合、パーティショナーを作成できます。 またはソースと、スレッド間でワークロードのバランスをとるしようとする必要がありますかどうかを指定します。 パーティショナーを負荷分散を構成する場合は、チャンクがパーティション分割を使用すると、し、要素に渡されます小さいチャンク内の各パーティションには要求に応じてします。 これにより、すべてのパーティションがまでループ全体を処理する要素を持つクエリが完了することを確認します。 負荷分散のいずれかのパーティション分割を提供するその他のオーバー ロードを使用できますソース。 +### PLINQ 用の負荷分散パーティショナーの構成 + メソッドの一部のオーバーロードを使用すると、配列または ソース用のパーティショナーを作成し、スレッド間でワークロードの分散を試みるかどうかを指定できます。 負荷分散を実行するようにパーティショナーを構成した場合、チャンク パーティション分割が使用され、要素は要求時に小さいチャンクで各パーティションに渡されます。 この方法は、ループまたはクエリの全体が完了するまで、すべてのパーティションに処理する要素があることを保証するのに役立ちます。 追加のオーバーロードを使用すると、任意の ソースを負荷分散パーティション分割できます。 - 一般に、負荷分散には、要素を要求する比較的多くの場合、パーティショナーからパーティションが必要です。 これに対し、静的パーティション分割を実行するパーティショナーで割り当てることができます要素各パーティショナーを一度にすべての範囲またはチャンクがパーティション分割を使用しています。 負荷分散よりも少ないオーバーヘッドが必要ですが、1 つのスレッドが他よりもはるかに多くの作業終了した場合の実行に長い時間がかかる場合があります。 既定では IList または、配列が渡される PLINQ 常に範囲パーティション分割を使用せず、負荷分散します。 PLINQ の負荷分散を有効にするを使用して、`Partitioner.Create`メソッドを次の例で示すようにします。 + 一般に、負荷分散では、パーティションで比較的頻繁にパーティショナーに要素を要求する必要があります。 これに対し、静的パーティション分割を実行するパーティショナーでは、範囲パーティション分割またはチャンク パーティション分割を使用して、各パーティショナーに要素を一度に割り当てることができます。 この方法では、負荷分散よりもオーバーヘッドが少なくて済みますが、あるスレッドが他のスレッドよりもはるかに多くの作業を行う場合は、実行時間が長くなることがあります。 既定では、IList または配列が渡された場合、PLINQ は常に負荷分散なしの範囲パーティション分割を使用します。 PLINQ で負荷分散を有効にするには、次の例に示すように、`Partitioner.Create` メソッドを使用します。 [!code-csharp[TPL_Partitioners#02](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_partitioners/cs/partitioners.cs#02)] [!code-vb[TPL_Partitioners#02](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_partitioners/vb/partitionsnippets_vb.vb#02)] - かどうかをロードを使用する、特定のシナリオで分散テストし、代表的な負荷とコンピューターの構成を完了する操作に要する時間を測定する最善の方法です。 たとえば、静的パーティション分割が飛躍的に向上するいくつかのコアだけをあるマルチコア コンピューター上でが速度低下を比較的多くのコアを持つコンピューター上になることがあります。 + 特定のシナリオで負荷分散を使用するかどうかを判断する最適な方法は、典型的な負荷およびコンピューター構成の下で操作が完了するまでにどのくらいの時間がかかるかを実験し、計測することです。 たとえば、静的パーティション分割は、少数のコアしか持たないマルチコア コンピューターでは速度が飛躍的に向上することがありますが、比較的多くのコアを持つコンピューターでは速度が低下することがあります。 - 次の表の使用可能なオーバー ロード、メソッドです。 これらのできるパーティショナーが PLINQ でのみ使用するだけではありませんかです。 また、任意のカスタム parallel コンストラクトにも使用できます。 + 次の表に、 メソッドで使用できるオーバーロードを示します。 これらのパーティショナーは、PLINQ または での使用に限定されるわけではありません。 これらのパーティショナーは、任意のカスタム parallel コンストラクトでも使用できます。 -|オーバー ロード|使用して負荷分散| +|オーバーロード|負荷分散を使用する| |--------------|-------------------------| ||Always| -||ブール型の引数が true として指定されている場合| -||ブール型の引数が true として指定されている場合| +||ブール型の引数を true と指定した場合| +||ブール型の引数を true と指定した場合| ||Never| ||Never| ||Never| ||Never| -### Parallel.ForEach の静的範囲パーティショナーを構成します。 - ループ、ループの本体が代理人としてメソッドを提供します。 デリゲートを呼び出すのコストは、仮想メソッドの呼び出しとほぼ同じです。 一部のシナリオでは、並列ループの本体が小さい各ループ反復でデリゲートの呼び出しのコストが大幅になる可能性があります。 このような状況のいずれかを使用できる、オーバー ロードを作成する、ソース要素の上の範囲パーティションのです。 次に、この範囲のコレクションを渡すことができます、メソッド本体を持つ、通常から成る`for`ループします。 この方法の利点は、デリゲートを呼び出すコストが、範囲ごとではなく、一度に 1 つの要素 1 回だけ発生することです。 次の例では、基本的なパターンを示します。 +### Parallel.ForEach 用の静的範囲パーティショナーの構成 + ループでは、ループの本体がデリゲートとしてメソッドに提供されます。 このデリゲートを呼び出すコストは、仮想メソッドの呼び出しとほぼ同じです。 シナリオによっては、並列ループの本体が小さく、各ループ反復でデリゲートを呼び出すコストが膨大になることがあります。 そのような状況では、いずれかの オーバーロードを使用して、ソース要素に対する範囲パーティション分割の を作成できます。 その後、この範囲のコレクションを、本体が通常の `for` ループで構成される メソッドに渡すことができます。 この方法の利点は、デリゲートを呼び出すコストが、要素ごとに 1 回ではなく、範囲ごとに 1 回しか発生しないことです。 基本的なパターンを次の例に示します。 [!code-csharp[TPL_Partitioners#01](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_partitioners/cs/partitioner01.cs#01)] [!code-vb[TPL_Partitioners#01](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_partitioners/vb/partitionercreate01.vb#01)] - ループ内のすべてのスレッドが受け取る独自最初と最後の指定されたサブ範囲のインデックス値を格納しています。 内部`for`ループには、`fromInclusive`と`toExclusive`にループ、配列値または直接です。 + ループ内のすべてのスレッドは、指定されたサブ範囲の開始インデックス値と終了インデックス値を含む独自の を受け取ります。 内側の `for` ループでは、`fromInclusive` 値および `toExclusive` 値を使用して、配列または を直接ループ処理します。 - 1 つ、オーバー ロードでは、パーティション、およびパーティションの数のサイズを指定することができます。 このオーバー ロードは、要素ごとの作業が 1 つの要素の 1 つでも仮想メソッドの呼び出しがパフォーマンスに大きな影響を及ぼしますがかなり低いシナリオで使用できます。 + オーバーロードのいずれかを使用すると、パーティションのサイズと、パーティションの数を指定できます。 このオーバーロードは、要素ごとの作業がきわめて少なく、要素ごとに 1 回の仮想メソッド呼び出しでもパフォーマンスに大きな影響が及ぶシナリオで使用できます。 ## カスタム パーティショナー - 一部のシナリオで意義またはであっても、独自のパーティショナーを実装する必要があります。 たとえば、既定のクラスの内部構造の知識に基づいてパーティショナー設定できるより効率的に分割するカスタム コレクション クラスがあります。 または、ソース コレクション内の異なる場所にある要素を処理する時間の知識に基づいてさまざまなサイズの範囲パーティションを作成することがあります。 + シナリオによっては、独自のパーティショナーを実装するのが適切か、または必須である場合があります。 たとえば、クラスの内部構造に関する知識に基づいて、カスタム コレクション クラスを既定のパーティショナーよりも効率的にパーティション分割できる場合があります。 または、ソース コレクションの異なる場所にある要素を処理するのにかかる時間についての知識に基づいて、可変サイズの範囲パーティションを作成する必要がある場合があります。 - 基本的なカスタム パーティショナーを作成するには、派生クラスをし、次の表に示すように、仮想メソッドをオーバーライドします。 + 基本的なカスタム パーティショナーを作成するには、 からクラスを派生させ、次の表に示すように仮想メソッドをオーバーライドします。 ||| |-|-| -||このメソッドは、メイン スレッドによって 1 回呼び出され、IList(IEnumerator(TSource)) を返します。 ループまたはクエリでは、各ワーカー スレッドを呼び出すことができます`GetEnumerator`を取得する一覧で、個別のパーティション上でします。| -||返す`true`を実装する場合、それ以外の場合、`false`です。| -||場合は`true`、このメソッドは、の代わりに必要に応じて呼び出すことができるです。| +||このメソッドは、メイン スレッドによって 1 回呼び出され、IList(IEnumerator(TSource)) を返します。 ループまたはクエリ内の各ワーカー スレッドでは、リスト上で `GetEnumerator` を呼び出して、個別のパーティションに対する を取得できます。| +||`true` を実装した場合は を返し、それ以外の場合は `false` を返します。| +|| が `true` の場合、このメソッドを必要に応じて の代わりに呼び出すことができます。| - 結果は並べ替え可能なである必要があります、またはインデックス付きのアクセスを必要な要素から派生し、次の表に示すように、仮想メソッドをオーバーライドします。 + 結果が並べ替え可能である必要がある場合、または要素へのインデックス付きアクセスが必要な場合、 から派生させて、次の表に示すように仮想メソッドをオーバーライドします。 ||| |-|-| -||このメソッドは、メイン スレッドによって 1 回呼び出されるを返します、`IList(IEnumerator(TSource))`です。 ループまたはクエリでは、各ワーカー スレッドを呼び出すことができます`GetEnumerator`を取得する一覧で、個別のパーティション上でします。| -||返す`true`を実装する場合。 それ以外の場合は false。| -||通常、これだけ呼び出しますです。| -||場合は`true`、このメソッドは、の代わりに必要に応じて呼び出すことができるです。| +||このメソッドは、メイン スレッドによって 1 回呼び出され、`IList(IEnumerator(TSource))` を返します。 ループまたはクエリ内の各ワーカー スレッドでは、リスト上で `GetEnumerator` を呼び出して、個別のパーティションに対する を取得できます。| +|| を実装した場合は `true` を返し、それ以外の場合は false を返します。| +||通常は を単純に呼び出します。| +|| が `true` の場合、このメソッドを必要に応じて の代わりに呼び出すことができます。| - 次の表に、追加方法の詳細については、3 種類のパーティショナーを実装の負荷分散、クラスです。 + 次の表に、3 種類の負荷分散パーティショナーで クラスを実装する方法の詳細を示します。 -|メソッドとプロパティ|IList 配列の負荷分散なし/|IList 配列の負荷分散/|IEnumerable| +|メソッド/プロパティ|負荷分散なしの IList/配列|負荷分散ありの IList/配列|IEnumerable| |----------------------|-------------------------------------------|----------------------------------------|-----------------| -||範囲パーティション分割を使用します。|使用して指定された partitionCount のリスト用に最適化された、チャンクがパーティション分割|静的な数のパーティションを作成することでパーティション分割チャンクを使用します。| -||例外のスローをサポートしていません。|使用してリスト用に最適化された、チャンクがパーティション分割および動的なパーティション|パーティションの数が動的に作成して使用してチャンクがパーティション分割します。| +||範囲パーティション分割を使用|指定された partitionCount のリストに最適化されたチャンク パーティション分割を使用|静的な数のパーティションを作成することにより、チャンク パーティション分割を使用| +||サポートしていない機能にアクセスしたときの例外をスロー|リストおよび動的なパーティションに最適化されたチャンク パーティション分割を使用|動的な数のパーティションを作成することにより、チャンク パーティション分割を使用| ||`true` を返します。|`true` を返します。|`true` を返します。| ||`true` を返します。|`false` を返します。|`false` を返します。| ||`true` を返します。|`true` を返します。|`true` を返します。| ||`false` を返します。|`true` を返します。|`true` を返します。| -### 動的なパーティション - パーティショナーをで使用する場合、メソッド、する必要がありますを動的なパーティションの数を返します。 つまり、パーティショナーがループの実行中にいつでもは新しいパーティションのオンデマンドの列挙子を指定できる点です。 基本的には、ループは、新しい並列タスクを追加するたびに、そのタスク用の新しいパーティションを要求します。 並べ替え可能であるデータを必要とする場合から派生してできるように、各パーティション内の各項目に一意のインデックスが割り当てられます。 +### 動的パーティション + パーティショナーを メソッドで使用する場合、動的な数のパーティションを返すことができる必要があります。 これは、パーティショナーがループの実行中の任意の時点で、新しいパーティションの列挙子をオンデマンドで供給できることを意味します。 基本的に、ループで新しい並列タスクを追加するたびに、そのタスク用の新しいパーティションが要求されます。 データが順序付け可能である必要がある場合は、 から派生させて、各パーティション内の各項目に一意のインデックスが割り当てられるようにします。 - 詳細については、および例に、次を参照してください。[する方法: 動的パーティションを実装する](../../../docs/standard/parallel-programming/how-to-implement-dynamic-partitions.md)です。 + 詳細および使用例については、[「方法: 動的パーティションを実装する」](../../../docs/standard/parallel-programming/how-to-implement-dynamic-partitions.md)を参照してください。 ### パーティショナーのコントラクト - カスタム パーティショナーを実装するときにこれらのガイドラインに従ってを確実に正しい PLINQ 対話とTPL で。 + カスタム パーティショナーを実装するときは、次のガイドラインに従って、PLINQ および TPL 内の との適切な相互作用を保証します。 -- 場合が 0 の引数を指定して呼び出された以下の`partitionsCount`、スローです。 PLINQ および TPL に渡すことはありませんが、`partitionCount`を 0 に等しい、それでもをお勧めする可能性を防ぐ必要があります。 +- が `partitionsCount` に 0 以下の引数を指定して呼び出された場合は、 をスローします。 PLINQ および TPL が 0 と等しい `partitionCount` を渡すことはありませんが、このような場合に備えることをお勧めします。 -- およびを常に返します`partitionsCount`パーティションの数。 パーティショナーは、データが不足するいるし、メソッドは、残りのパーティションごとに空の列挙子を返す必要があります、要求されると、同じ数のパーティションを作成することはできません。 PLINQ および TPL の両方がそれ以外の場合、スローされます、です。 +- および では、常に `partitionsCount` 個のパーティションを返す必要があります。 パーティショナーがデータを使い果たし、要求された数のパーティションを作成できない場合、このメソッドでは残りのパーティションのそれぞれについて、空の列挙子を返す必要があります。 それ以外の場合、PLINQ と TPL はいずれも をスローします。 -- 、および返りません`null`(`Nothing` Visual Basic で)。 場合は、PLINQ は TPL をスロー/、です。 +- では、`null` (Visual Basic では `Nothing`) を返さないようにします。 返した場合、PLINQ または TPL は をスローします。 -- パーティションを返すメソッドでは、完全かつ一意に列挙できるデータ ソースのパーティションが返す常にする必要があります。 ありません、データ ソースまたはスキップした項目の重複するパーティショナーのデザインに必要な場合を除き、します。 この規則に従わない場合の出力順がスクランブルされる可能性があります。 +- パーティションを返すメソッドでは、データ ソースを完全かつ一意に列挙できるパーティションを常に返す必要があります。 パーティショナーの設計により特別に必要な場合を除いて、データ ソース内の項目が重複したり、スキップされたりすることがないようにします。 この規則に従わないと、出力順序が乱れる場合があります。 -- 出力順がスクランブルないように、次のブール型の getter は、次の値を常に正確に返す必要があります。 +- 次のブール型の getter では、常に以下の値を正確に返して、出力順序が乱れないようにする必要があります。 - - `KeysOrderedInEachPartition`: 各パーティションは、増加するキーのインデックスを持つ要素を返します。 + - `KeysOrderedInEachPartition`: 各パーティションは、昇順のキー インデックスを持つ要素を返します。 - - `KeysOrderedAcrossPartitions`: すべてのパーティションのパーティション内のキー インデックス、返された*すれば*パーティション内のキーのインデックスよりも高い*すれば*-1 です。 + - `KeysOrderedAcrossPartitions`: 返されるすべてのパーティションについて、パーティション *i* のキー インデックスは、パーティション *i*-1 のキー インデックスよりも大きくなります。 - - `KeysNormalized`: すべてのキー インデックスは 0 から始まる、置かず単調に増加します。 + - `KeysNormalized`: すべてのキー インデックスは、0 から始まりギャップなしで単調に増加します。 -- すべてのインデックスは一意である必要があります。 インデックスを重複できない可能性があります。 この規則に従わない場合の出力順がスクランブルされる可能性があります。 +- どのインデックスも一意である必要があります。 インデックスを重複させることはできません。 この規則に従わないと、出力順序が乱れる場合があります。 -- すべてのインデックスを負にする必要があります。 この規則に従わない場合、PLINQ/TPL は例外をスロー可能性があります。 +- どのインデックスも負数以外である必要があります。 この規則に従わないと、PLINQ または TPL が例外をスローする場合があります。 -## 関連項目 +## 参照 [並列プログラミング](../../../docs/standard/parallel-programming/index.md) [方法: 動的パーティションを実装する](../../../docs/standard/parallel-programming/how-to-implement-dynamic-partitions.md) [方法: 静的パーティション分割用にパーティショナーを実装する](../../../docs/standard/parallel-programming/how-to-implement-a-partitioner-for-static-partitioning.md) diff --git a/docs/standard/parallel-programming/data-parallelism-task-parallel-library.md b/docs/standard/parallel-programming/data-parallelism-task-parallel-library.md index 639145d59e1..5d7fee28f8a 100644 --- a/docs/standard/parallel-programming/data-parallelism-task-parallel-library.md +++ b/docs/standard/parallel-programming/data-parallelism-task-parallel-library.md @@ -11,22 +11,26 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: parallelism, data +helpviewer_keywords: +- parallelism, data ms.assetid: 3f05f33f-f1da-4b16-81c2-9ceff1bef449 -caps.latest.revision: "25" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 13788542fa368bd5bcf1c2f277c9d83f84b35cdb -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 0644e2d9e7a52dd5747c9442a4771aa7400cdcb0 +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/19/2018 --- # データの並列化 (タスク並列ライブラリ) "*データの並列化*" とは、ソース コレクションまたは配列の要素に対して、同じ操作を同時に (つまり、並列で) 実行するシナリオを意味します。 データの並列化操作では、複数のスレッドが異なるセグメント上で同時に操作できるようにソース コレクションがパーティション分割されます。 - タスク並列ライブラリ (TPL) は クラスによって、データの並列化をサポートします。 このクラスでは、[for](~/docs/csharp/language-reference/keywords/for.md) ループおよび [foreach](~/docs/csharp/language-reference/keywords/foreach-in.md) ループ (Visual Basic では `For` および `For Each`) をメソッド ベースで並列実装できます。 ループまたは ループに対するループのロジックは、順次ループを記述する場合と同等に記述します。 スレッドまたはキューの作業項目を作成する必要はありません。 基本のループでは、ロックを取得する必要はありません。 TPL では低水準の作業はすべて自動的に行われます。 使用の詳細については、ドキュメントをダウンロードして[並列プログラミングのパターン: .NET Framework 4 による並列パターンの適用と理解](http://www.microsoft.com/download/details.aspx?id=19222)です。 次のコード例では、単純な `foreach` ループおよびそのループに相当する並列を示しています。 + タスク並列ライブラリ (TPL) は クラスによって、データの並列化をサポートします。 このクラスでは、[for](~/docs/csharp/language-reference/keywords/for.md) ループおよび [foreach](~/docs/csharp/language-reference/keywords/foreach-in.md) ループ (Visual Basic では `For` および `For Each`) をメソッド ベースで並列実装できます。 ループまたは ループに対するループのロジックは、順次ループを記述する場合と同等に記述します。 スレッドまたはキューの作業項目を作成する必要はありません。 基本のループでは、ロックを取得する必要はありません。 TPL では低水準の作業はすべて自動的に行われます。 および の使い方について詳しくは、ドキュメント「[Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4](http://www.microsoft.com/download/details.aspx?id=19222)」(並列プログラミングのパターン: .NET Framework 4 の並列パターンの理解と適用) をダウンロードしてご覧ください。 次のコード例では、単純な `foreach` ループおよびそのループに相当する並列を示しています。 > [!NOTE] > ここでは、ラムダ式を使用して TPL でデリゲートを定義します。 C# または Visual Basic のラムダ式についての情報が必要な場合は、「[Lambda Expressions in PLINQ and TPL (PLINQ および TPL のラムダ式)](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md)」を参照してください。 @@ -47,11 +51,11 @@ ms.lasthandoff: 10/18/2017 ## 関連トピック -|タイトル|説明| +|Title|説明| |-----------|-----------------| |[方法: 単純な Parallel.For ループを記述する](../../../docs/standard/parallel-programming/how-to-write-a-simple-parallel-for-loop.md)|任意の配列またはインデックス可能な ソース コレクションに対して ループを記述する方法について説明します。| |[方法: 単純な Parallel.ForEach ループを記述する](../../../docs/standard/parallel-programming/how-to-write-a-simple-parallel-foreach-loop.md)|任意の ソース コレクションに対して ループを記述する方法について説明します。| -|[方法: Parallel.For ループを停止または中断する](http://msdn.microsoft.com/en-us/de52e4f1-9346-4ad5-b582-1a4d54dc7f7e)|並列ループを停止するかまたは抜けて、そのアクションがすべてのスレッドに通知されるようにする方法について説明します。| +|[方法: Parallel.For ループを停止または中断する](http://msdn.microsoft.com/library/de52e4f1-9346-4ad5-b582-1a4d54dc7f7e)|並列ループを停止するかまたは抜けて、そのアクションがすべてのスレッドに通知されるようにする方法について説明します。| |[方法: スレッド ローカル変数を使用する Parallel.For ループを記述する](../../../docs/standard/parallel-programming/how-to-write-a-parallel-for-loop-with-thread-local-variables.md)|各スレッドが他のスレッドからは見えないプライベート変数を維持する ループを記述する方法と、ループが完了したときにすべてのスレッドの結果を同期する方法について説明します。| |[方法: スレッド ローカル変数を使用する Parallel.ForEach ループを記述する](../../../docs/standard/parallel-programming/how-to-write-a-parallel-foreach-loop-with-thread-local-variables.md)|各スレッドが他のスレッドからは見えないプライベート変数を維持する ループを記述する方法と、ループが完了したときにすべてのスレッドの結果を同期する方法について説明します。| |[方法: Parallel.For または ForEach ループを取り消す](../../../docs/standard/parallel-programming/how-to-cancel-a-parallel-for-or-foreach-loop.md)| を使用して並列ループを取り消す方法について説明します。| @@ -59,5 +63,5 @@ ms.lasthandoff: 10/18/2017 |[タスク並列ライブラリ (TPL)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md)|タスク並列ライブラリの概要を示します。| |[並列プログラミング](../../../docs/standard/parallel-programming/index.md)|.NET Framework の並列プログラミングについて説明します。| -## 関連項目 +## 参照 [並列プログラミング](../../../docs/standard/parallel-programming/index.md) diff --git a/docs/standard/parallel-programming/data-structures-for-parallel-programming.md b/docs/standard/parallel-programming/data-structures-for-parallel-programming.md index cc4a42e4d5c..dd6183fafcc 100644 --- a/docs/standard/parallel-programming/data-structures-for-parallel-programming.md +++ b/docs/standard/parallel-programming/data-structures-for-parallel-programming.md @@ -8,73 +8,77 @@ ms.suite: ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article -helpviewer_keywords: data structures, multi-threading +helpviewer_keywords: +- data structures, multi-threading ms.assetid: bdc82f2f-4754-45a1-a81e-fe2e9c30cef9 -caps.latest.revision: "15" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: f35c5382455021f0a001604367e59204ce4ad93c -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f2da3e1ecfb9018adf7827aad6a569cd057c59eb +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/19/2018 --- # 並列プログラミングのデータ構造 -.NET Framework version 4 には、同時実行コレクション クラス、軽量な同期プリミティブ、および遅延初期化の種類のセットなどの並列プログラミングに役立ついくつかの新しい型が導入されています。 タスク並列ライブラリおよび PLINQ を含めて、マルチ スレッド アプリケーション コードでこれらの型を使用することができます。 +.NET Framework バージョン 4 では、同時実行コレクション クラスのセット、軽量な同期プリミティブ、遅延初期化用の型など、並列プログラミングに役立つ複数の新しい型が導入されています。 これらの型は、タスク並列ライブラリや PLINQ などの任意のマルチスレッド アプリケーション コードで使うことができます。 ## 同時実行コレクション クラス - 内のコレクション クラス、スレッド セーフを提供する名前空間を追加、削除可能な場合は、ロックを回避する操作とロックが必要な粒度の細かいロックを使用します。 .NET Framework のバージョン 1.0 および 2.0 で導入されたコレクションとは異なり、同時実行コレクション クラスに項目にアクセスするときに、すべてのロックを実行するユーザー コードは必要ありません。 同時実行コレクション クラスが大幅にパフォーマンスが向上種類など(ロックを使用してユーザー実装) では複数のスレッドが追加し、コレクションから項目を削除します。 + 名前空間のコレクション クラスは、できる限りロックを回避するスレッドセーフな追加と削除の操作を提供し、ロックが必要なときは粒度の細かいロックを使います。 .NET Framework バージョン 1.0 および 2.0 で導入されたコレクションとは異なり、同時実行コレクション クラスでは、項目にアクセスするときにユーザー コードでロックを取得する必要はありません。 複数のスレッドがコレクションの項目を追加および削除するシナリオでは、同時実行コレクション クラスを使うと、 (ユーザー実装のロックを使用) などの型に対するパフォーマンスが大幅に向上します。 - 次の表は、新しい同時実行コレクション クラスを示します。 + 次の表は、新しい同時実行コレクション クラスの一覧です。 |型|説明| |----------|-----------------| -|| を実装するスレッド セーフなコレクションに、ブロッキングと範囲指定の機能を提供します。 利用できるスロットがない場合、またはコレクションがいっぱいの場合は、producer スレッドがブロックされます。 コレクションが空の場合、コンシューマーのスレッドがブロックします。 この型には、コンシューマーとプロデューサーによって非ブロッキング アクセスもサポートしています。 基底クラスとして使用できますか、バッキング ストアに、ブロッキングとをサポートする任意のコレクション クラスの境界を提供するです。| -||スケーラビリティを提供するスレッド セーフであるバッグの実装では、追加し、操作を取得します。| -||スケーラブルな同時実行ディクショナリ型。| -||同時実行と拡張性の高い FIFO キューです。| -||同時実行と拡張性の高い LIFO スタック。| +|| を実装するスレッド セーフなコレクションに、ブロッキングと範囲指定の機能を提供します。 利用できるスロットがない場合、またはコレクションがいっぱいの場合は、プロデューサー スレッドがブロックします。 コレクションが空の場合は、コンシューマー スレッドがブロックします。 この型は、コンシューマーとプロデューサーによる非ブロッキング アクセスもサポートします。 は、基底クラスとして、または をサポートする任意のコレクション クラスにブロッキングと範囲指定を提供するバッキング ストアとして、使うことができます。| +||スケーラブルな追加と取得の操作を提供するスレッドセーフなバッグの実装です。| +||同時実行のスケーラブルなディクショナリ型です。| +||同時実行のスケーラブルな FIFO キューです。| +||同時実行のスケーラブルな LIFO スタックです。| 詳しくは、「[スレッド セーフなコレクション](../../../docs/standard/collections/thread-safe/index.md)」を参照してください。 ## 同期プリミティブ - 新しい同期プリミティブ、名前空間が従来のマルチ スレッド コード内で見つかった高コストのロック メカニズムを回避することで粒度の細かい同時実行性と高速なパフォーマンスを有効にします。 いくつか、新しい型のように.NET Framework の以前のリリースに対応するがあるないです。 + 名前空間の新しい同期プリミティブを使うと、従来のマルチスレッド コードに見られるような高コストのロック メカニズムを回避することで、粒度の細かい同時実行性と高速のパフォーマンスが提供されます。 などの一部の新しい型には、.NET Framework の以前のリリースに対応するものがありません。 - 次の表は、新しい同期型を示します。 + 次の表は、新しい同期型の一覧です。 |型|説明| |----------|-----------------| -||アルゴリズムで並行してポイントする各タスクは到着を通知して、一部またはすべてのタスクが到着するまでのブロックを指定して作業する複数のスレッドを有効にします。 詳細については、「[バリア](../../../docs/standard/threading/barrier.md)」を参照してください| -||Rendezvous の簡単なメカニズムを提供することで、フォークと結合のシナリオを簡略化します。 詳細については、次を参照してください。 [CountdownEvent](../../../docs/standard/threading/countdownevent.md)です。| -||ような同期プリミティブです。 軽量がプロセス間通信用にのみ使用できます。 詳細については、次を参照してください。 [ManualResetEvent と ManualResetEventSlim](../../../docs/standard/threading/manualresetevent-and-manualreseteventslim.md)です。| -||同期プリミティブは、リソースを同時にアクセスできるスレッドの数またはリソースのプールを制限します。 詳細については、次を参照してください。 [Semaphore と SemaphoreSlim](../../../docs/standard/threading/semaphore-and-semaphoreslim.md)です。| -||スレッドを原因となった相互排他ロック プリミティブが、ループ内で待機するロックを取得しようとしてまたは*スピン*クォンタムを生成する前に、期間。 ここで、ロックを待機できると予想される短いシナリオでオファー ロックの他の形式よりもパフォーマンスが向上します。 詳細については、次を参照してください。[スピンロック](../../../docs/standard/threading/spinlock.md)です。| -||小型、軽量の型で、スピン、指定した時間と最終的には、スピン カウントが超過した場合、待機状態に、スレッドを配置します。 詳細については、次を参照してください。 [SpinWait](../../../docs/standard/threading/spinwait.md)です。| +||各タスクが到着を通知し、一部または全部のタスクが到着するまでブロックすることができるポイントを提供することにより、複数のスレッドが 1 つのアルゴリズムで並列に動作できるようにします。 詳細については、「[バリア](../../../docs/standard/threading/barrier.md)」を参照してください| +||簡単なランデブー メカニズムを提供することにより、フォークと結合のシナリオを簡略化します。 詳しくは、「[CountdownEvent](../../../docs/standard/threading/countdownevent.md)」をご覧ください。| +|| と同様の同期プリミティブです。 の方が軽量ですが、プロセス内通信にしか使えません。 詳しくは、「[ManualResetEvent と ManualResetEventSlim](../../../docs/standard/threading/manualresetevent-and-manualreseteventslim.md)」をご覧ください。| +||リソースまたはリソースのプールに同時にアクセスできるスレッドの数を制限する同期プリミティブです。 詳しくは、「[Semaphore と SemaphoreSlim](../../../docs/standard/threading/semaphore-and-semaphoreslim.md)」をご覧ください。| +||ロックを取得しようとしているスレッドがクォンタムを生成する前にしばらくループ ("*スピン*") で待機するようになる、相互排他ロック プリミティブです。 ロックの待機が短いと予想されるシナリオでは、他のロック形式より の方がよいパフォーマンスを提供します。 詳しくは、「[SpinLock](../../../docs/standard/threading/spinlock.md)」をご覧ください。| +||指定された時間だけスピンし、スピン カウントを超過した場合は最終的にスレッドを待機状態にする、小型で軽量の型です。 詳しくは、「[SpinWait](../../../docs/standard/threading/spinwait.md)」をご覧ください。| 詳細については次を参照してください: - [方法: 下位レベルの同期に SpinLock を使用する](../../../docs/standard/threading/how-to-use-spinlock-for-low-level-synchronization.md) -- [方法: バリアと同時実行操作を同期](../../../docs/standard/threading/how-to-synchronize-concurrent-operations-with-a-barrier.md)です。 +- [方法: バリアを使用して同時実行操作を同期する](../../../docs/standard/threading/how-to-synchronize-concurrent-operations-with-a-barrier.md)。 ## 遅延初期化クラス - 限定的な初期化が必要になるまで、オブジェクトのメモリには割り当てられません。 限定的な初期化は、オブジェクトの割り当てをプログラムの有効期間に均等に分散させることによってパフォーマンスを向上できます。 型をラッピングするを任意のカスタム型の限定的な初期化を有効にするです。 + 遅延初期化では、オブジェクトのメモリは必要になるまで割り当てられません。 遅延初期化を使うと、オブジェクトの割り当てがプログラムの有効期間全体に均等に分散されるので、パフォーマンスが向上します。 型をラッピングすることにより、任意のカスタム型で遅延初期化を有効にできます。 - 次の表は、遅延初期化の種類を示します。 + 次の表は、遅延初期化型の一覧です。 |型|説明| |----------|-----------------| -||軽量のスレッド セーフである限定的な初期化を提供します。| -||スレッドごとの単位で限定的に呼び出す初期化関数の各スレッドで遅延初期化の値を提供します。| -||遅延初期化の専用インスタンスを割り当てる必要を避けるための静的メソッドを提供します。 代わりに、参照を使用してアクセスされたときのみ、ターゲットが初期化されているを確認してください。| +||軽量でスレッドセーフの遅延初期化を提供します。| +||スレッドごとに遅延初期化された値を提供し、各スレッドは初期化関数を遅延して呼び出します。| +||専用の遅延初期化インスタンスを割り当てる必要のない静的メソッドを提供します。 代わりに、参照を使って、ターゲットがアクセスされたときは初期化されているようにします。| 詳細については、「[限定的な初期化](../../../docs/framework/performance/lazy-initialization.md)」を参照してください。 -## 例外の集約 - 型は、別のスレッドで同時にスローされ、1 つの例外として連結されたスレッドに戻すことを複数の例外をキャプチャするために使用できます。 型および PLINQ を使用してこの目的で広範囲にします。 詳細については、次を参照してください。 [NIB: 方法: タスクによってスローされた例外を処理](http://msdn.microsoft.com/en-us/d6c47ec8-9de9-4880-beb3-ff19ae51565d)と[する方法: PLINQ クエリの例外を処理](../../../docs/standard/parallel-programming/how-to-handle-exceptions-in-a-plinq-query.md)です。 +## 例外集約 + 型を使うと、別のスレッドで同時にスローされた複数の例外をキャプチャし、1 つの例外として結合スレッドに戻すことができます。 型、 型、PLINQ は、この目的に を広範に使います。 詳しくは、「[NIB: 方法: タスクがスローした例外を処理する](http://msdn.microsoft.com/library/d6c47ec8-9de9-4880-beb3-ff19ae51565d)」および「[方法: PLINQ クエリの例外を処理する](../../../docs/standard/parallel-programming/how-to-handle-exceptions-in-a-plinq-query.md)」をご覧ください。 -## 関連項目 +## 参照 [並列プログラミング](../../../docs/standard/parallel-programming/index.md) diff --git a/docs/standard/parallel-programming/dataflow-task-parallel-library.md b/docs/standard/parallel-programming/dataflow-task-parallel-library.md index 620922f5292..44b5a5ddd9c 100644 --- a/docs/standard/parallel-programming/dataflow-task-parallel-library.md +++ b/docs/standard/parallel-programming/dataflow-task-parallel-library.md @@ -1,12 +1,8 @@ --- title: "データフロー (タスク並列ライブラリ)" -ms.custom: ms.date: 03/30/2017 ms.prod: .net -ms.reviewer: -ms.suite: ms.technology: dotnet-standard -ms.tgt_pltfrm: ms.topic: article dev_langs: - csharp @@ -15,23 +11,24 @@ helpviewer_keywords: - Task Parallel Library, dataflows - TPL dataflow library ms.assetid: 643575d0-d26d-4c35-8de7-a9c403e97dd6 -caps.latest.revision: "22" author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 73933c5f171881b5b3a2479aabdb26d1abd58cfc -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f91100303cb0970ed430eebe2a377a487017b47d +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/19/2018 --- # データフロー (タスク並列ライブラリ) タスク並列ライブラリ (TPL) はデータ フロー コンポーネントを提供し、同時実行対応アプリケーションの堅牢性を強化します。 これらのデータ フロー コンポーネントは *TPL データ フロー ライブラリ*と総称されます。 データ フロー モデルは、粒度の粗いデータ フローおよびパイプライン処理タスクのためのインプロセス メッセージ パッシングを提供し、アクター ベースのプログラミング モデルを推進します。 データ フロー コンポーネントは、TPL の種類とスケジュール インフラストラクチャの上でビルドされ、C#、[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)]、および同期プログラミングの F# 言語のサポートを統合します。 相互に非同期通信を行う必要がある複数の操作を行う場合、またはデータが使用可能になったときにデータを処理する場合に、これらのデータ フロー コンポーネントは役立ちます。 たとえば、Web カメラからのイメージ データを処理するアプリケーションを考えてみます。 データ フロー モデルを使用すると、イメージ フレームが使用可能になったときに、それをアプリケーションで処理できます。 たとえば、アプリケーションが輝度修正や赤目補正などを実行してイメージ フレームを向上させる場合、データ フロー コンポーネントの*パイプライン*を作成できます。 パイプラインの各ステージは、イメージを変換するために、TPL が提供する機能のような、粒度の粗い並列機能を使用する場合があります。 ここでは、TPL データ フロー ライブラリの概要を示します。 プログラミング モデル、定義済みのデータ フロー ブロックの型、およびアプリケーションの特定の要件を満たすためのデータ フロー ブロックの構成方法を説明します。 - -> [!TIP] -> TPL データ フローのライブラリ ( 名前空間) は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と一緒に配布されません。 インストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**プロジェクト メニューのおよびオンラインで検索から、`Microsoft.Tpl.Dataflow`パッケージ。 + +[!INCLUDE [tpl-install-instructions](../../../includes/tpl-install-instructions.md)] このドキュメントは、次のトピックに分かれています。 @@ -64,16 +61,16 @@ ms.lasthandoff: 10/18/2017 > それぞれの定義済みのソースのデータ フロー ブロックの型は、メッセージを受信した順にそれが伝達されることを保証するため、ソース ブロックは各メッセージを読み取ってから、次のメッセージを処理する必要があります。 したがって、フィルター処理を使用して複数のターゲットをソースに接続する場合、各メッセージを少なくとも 1 つのターゲット ブロックが受信するようにします。 そうしない場合、アプリケーションでデッドロックが発生する可能性があります。 ### メッセージ パッシング - データ フロー プログラミング モデルは、プログラムの独立したコンポーネントがメッセージの送信によって相互に通信する、*メッセージ パッシング*の概念に関連しています。 アプリケーション コンポーネント間でメッセージを伝達する方法の 1 つが呼び出されて、ターゲット データ フロー ブロック ポストにメッセージを送信する方法 (同期的には、機能非同期的に動作) および、およびメソッドのソース ブロックからメッセージを受信します。 入力データをヘッド ノード (ターゲット ブロック) に送信し、出力データをパイプラインのターミナル ノードまたはネットワーク (1 つ以上のソース ブロック) のターミナル ノードから受信することにより、これらのメソッドとデータ フロー パイプラインまたはネットワークを結合することができます。 メソッドを使用して、データが使用可能な、指定されたソースの先頭から読み取り、そのデータにアクションを実行することもできます。 + データ フロー プログラミング モデルは、プログラムの独立したコンポーネントがメッセージの送信によって相互に通信する、*メッセージ パッシング*の概念に関連しています。 アプリケーション コンポーネントの間でメッセージを伝達する方法の 1 つは、 および メソッドを呼び出して、ターゲット データ フロー ブロック ポストにメッセージを送信し ( は同期的に動作し、 は非同期的に動作します)、、および メソッドを呼び出して、ソース ブロックからメッセージを受け取ることです。 入力データをヘッド ノード (ターゲット ブロック) に送信し、出力データをパイプラインのターミナル ノードまたはネットワーク (1 つ以上のソース ブロック) のターミナル ノードから受信することにより、これらのメソッドとデータ フロー パイプラインまたはネットワークを結合することができます。 メソッドを使用して、データが使用可能な、指定されたソースの先頭から読み取り、そのデータにアクションを実行することもできます。 - ソース ブロックを呼び出してターゲット ブロックにデータを提供する、メソッドです。 ターゲット ブロックは、提供されたメッセージに、3 つの方法のうちの 1 つで応答します。メッセージを受け入れるか、メッセージを拒否するか、またはメッセージを延期できます。 ターゲットがメッセージを受け入れると、 メソッドは を返します。 ターゲットがメッセージを拒否すると、 メソッドは を返します。 ターゲットがソースからメッセージを受け取らないことを要求すると、 を返します。 その戻り値を受信した後は、定義済みのソース ブロックの型は、リンクされたターゲットにメッセージを提供せず、自動的にそのターゲットからリンク解除します。 + ソース ブロックは、 メソッドを呼び出して、ターゲット ブロックにデータを提供します。 ターゲット ブロックは、提供されたメッセージに、3 つの方法のうちの 1 つで応答します。メッセージを受け入れるか、メッセージを拒否するか、またはメッセージを延期できます。 ターゲットがメッセージを受け入れると、 メソッドは を返します。 ターゲットがメッセージを拒否すると、 メソッドは を返します。 ターゲットがソースからメッセージを受け取らないことを要求すると、 を返します。 その戻り値を受信した後は、定義済みのソース ブロックの型は、リンクされたターゲットにメッセージを提供せず、自動的にそのターゲットからリンク解除します。 - 後で使用するために、ターゲット ブロックがメッセージを延期すると、 メソッドは を返します。 メッセージを延期したターゲット ブロックには、その後の呼び出しことができます、メソッドを提供されたメッセージを予約しようとしています。 この時点で、メッセージはまだ使用できてターゲット ブロックから使用できるか、または他のターゲットに取得されています。 ターゲット ブロックがメッセージを後で必要または必要としないメッセージを呼び出し、またはメソッド、それぞれします。 通常は、メッセージの予約は、最短一致のモードで動作するデータ フロー ブロックの型で使用されます。 最短一致のモードについては、このドキュメントの後で説明します。 延期されたメッセージを予約せずに、ターゲット ブロックは メソッドを使用して、直接延期されたメッセージを使用しようとすることもできます。 + 後で使用するために、ターゲット ブロックがメッセージを延期すると、 メソッドは を返します。 メッセージを延期したターゲット ブロックは、後から メソッドを呼び出して、提供されたメッセージの予約を試みることができます。 この時点で、メッセージはまだ使用できてターゲット ブロックから使用できるか、または他のターゲットに取得されています。 ターゲット ブロックがメッセージを後から必要とする場合、またはメッセージを必要としない場合には、それぞれ または メソッドを呼び出します。 通常は、メッセージの予約は、最短一致のモードで動作するデータ フロー ブロックの型で使用されます。 最短一致のモードについては、このドキュメントの後で説明します。 延期されたメッセージを予約せずに、ターゲット ブロックは メソッドを使用して、直接延期されたメッセージを使用しようとすることもできます。 ### データ フロー ブロックの完了 - データ フロー ブロックは、*完了*の概念をサポートしています。 完了した状態にあるデータ フロー ブロックは、処理を実行しません。 各データ フロー ブロックが関連付けられていると呼ばれる、オブジェクト、*完了タスク*ブロックの完了ステータスを表すです。 オブジェクトの終了を待機できるため、完了タスクを使用して、データ フロー ネットワークの 1 つ以上のターミナル ノードが終了するまで待機できます。 インターフェイスは、データ フロー ブロックに完了の要求を通知する メソッドを定義し、またデータ フロー ブロックの完了タスクを返す プロパティを定義します。 はどちらも インターフェイスを継承します。 + データ フロー ブロックは、*完了*の概念をサポートしています。 完了した状態にあるデータ フロー ブロックは、処理を実行しません。 各データ フロー ブロックには、ブロックの完了ステータスを表す "*完了タスク*" と呼ばれる オブジェクトが関連付けられています。 オブジェクトの終了を待機できるため、完了タスクを使用して、データ フロー ネットワークの 1 つ以上のターミナル ノードが終了するまで待機できます。 インターフェイスは、データ フロー ブロックに完了の要求を通知する メソッドを定義し、またデータ フロー ブロックの完了タスクを返す プロパティを定義します。 はどちらも インターフェイスを継承します。 - データ フロー ブロックがエラーなしで完了したか、1 つのエラーが発生したか、複数のエラーが発生したか、取り消されたかを知る 2 つの方法があります。 最初の方法が呼び出されて、完了タスクでのメソッド、 `try` - `catch`ブロック (`Try` - `Catch` Visual Basic で)。 次の例では、入力値が 0 未満の場合に をスローする オブジェクトを作成します。 この例では、完了タスクで を呼び出すと、 がスローされます。 には オブジェクトの プロパティを使用してアクセスします。 + データ フロー ブロックがエラーなしで完了したか、1 つのエラーが発生したか、複数のエラーが発生したか、取り消されたかを知る 2 つの方法があります。 最初の方法は、`try`-`catch` ブロック (Visual Basic では `Try`-`Catch`) の完了タスクで メソッドを呼び出すことです。 次の例では、入力値が 0 未満の場合に をスローする オブジェクトを作成します。 この例では、完了タスクで を呼び出すと、 がスローされます。 には オブジェクトの プロパティを使用してアクセスします。 [!code-csharp[TPLDataflow_Overview#10](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_overview/cs/program.cs#10)] [!code-vb[TPLDataflow_Overview#10](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_overview/vb/program.vb#10)] @@ -87,7 +84,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPLDataflow_Overview#11](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_overview/cs/program.cs#11)] [!code-vb[TPLDataflow_Overview#11](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_overview/vb/program.vb#11)] - また、継続タスクの本体で などのプロパティを使用して、データ フロー ブロックの完了ステータスに関する追加情報を決定することもできます。 継続タスク、および継続タスクと取り消し処理やエラー処理との関連の詳細については、「[Chaining Tasks by Using Continuation Tasks](../../../docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md)」(継続タスクを使用したタスクのチェーン作成)、「[タスクのキャンセル](../../../docs/standard/parallel-programming/task-cancellation.md)」、「[例外処理 (タスク並列ライブラリ)](../../../docs/standard/parallel-programming/exception-handling-task-parallel-library.md)」、および「[方法: タスクがスローした例外を処理する](http://msdn.microsoft.com/en-us/d6c47ec8-9de9-4880-beb3-ff19ae51565d)」を参照してください。 + また、継続タスクの本体で などのプロパティを使用して、データ フロー ブロックの完了ステータスに関する追加情報を決定することもできます。 継続タスク、および継続タスクと取り消し処理やエラー処理との関連の詳細については、「[Chaining Tasks by Using Continuation Tasks](../../../docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md)」(継続タスクを使用したタスクのチェーン作成)、「[タスクのキャンセル](../../../docs/standard/parallel-programming/task-cancellation.md)」、「[例外処理 (タスク並列ライブラリ)](../../../docs/standard/parallel-programming/exception-handling-task-parallel-library.md)」、および「[方法: タスクがスローした例外を処理する](http://msdn.microsoft.com/library/d6c47ec8-9de9-4880-beb3-ff19ae51565d)」を参照してください。 [[ページのトップへ](#top)] @@ -106,7 +103,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPLDataflow_Overview#1](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_overview/cs/program.cs#1)] [!code-vb[TPLDataflow_Overview#1](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_overview/vb/program.vb#1)] - メッセージを書き込むし、メッセージを読み取る方法を示す完全な例については、オブジェクトを参照してください[する方法: メッセージを書き込むと、データ フロー ブロックからメッセージの読み取り](../../../docs/standard/parallel-programming/how-to-write-messages-to-and-read-messages-from-a-dataflow-block.md)です。 + オブジェクトへのメッセージの書き込み方法や、オブジェクトからのメッセージの読み取り方法の完全な例については、「[方法: データフロー ブロックに対してメッセージの読み取りと書き込みを行う](../../../docs/standard/parallel-programming/how-to-write-messages-to-and-read-messages-from-a-dataflow-block.md)」をご覧ください。 #### BroadcastBlock(T) クラスは、複数のメッセージを別のコンポーネントに渡すときに、そのコンポーネントで必要になるのが最新の値のみである場合に便利です。 また、このクラスは、メッセージを複数のコンポーネントにブロードキャストする場合にも便利です。 @@ -116,17 +113,17 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPLDataflow_Overview#2](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_overview/cs/program.cs#2)] [!code-vb[TPLDataflow_Overview#2](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_overview/vb/program.vb#2)] - 使用する方法を示す完全な例について複数のターゲット ブロックにメッセージをブロードキャストするを参照してください。[する方法: データフロー ブロックのタスク スケジューラを指定](../../../docs/standard/parallel-programming/how-to-specify-a-task-scheduler-in-a-dataflow-block.md)です。 + を使って複数のターゲット ブロックにメッセージをブロードキャストする方法を示す例について詳しくは、「[方法: データフロー ブロックのタスク スケジューラを指定する](../../../docs/standard/parallel-programming/how-to-specify-a-task-scheduler-in-a-dataflow-block.md)」をご覧ください。 #### WriteOnceBlock(T) - クラスは クラスに似ていますが、 オブジェクトに 1 回しか書き込むことができない点が異なります。 考えることができますc# ようなもの[読み取り専用](~/docs/csharp/language-reference/keywords/readonly.md)([ReadOnly](~/docs/visual-basic/language-reference/modifiers/readonly.md)で[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)]) ことを除いて、キーワード、オブジェクトを変更できなくなる値を受信した後代わりに構築時です。 クラスと同様に、ターゲットが オブジェクトからメッセージを受信しても、そのメッセージはそのオブジェクトから削除されません。 そのため、複数のターゲットがメッセージのコピーを受信します。 のクラスは、複数のメッセージの最初のメッセージだけを伝達する場合に便利です。 + クラスは クラスに似ていますが、 オブジェクトに 1 回しか書き込むことができない点が異なります。 は C# の [readonly](~/docs/csharp/language-reference/keywords/readonly.md) ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では [ReadOnly](~/docs/visual-basic/language-reference/modifiers/readonly.md)) キーワードと似ていると考えることができますが、構築時でなく、値を読み取った後は、 オブジェクトを変更できなくなる点が異なります。 クラスと同様に、ターゲットが オブジェクトからメッセージを受信しても、そのメッセージはそのオブジェクトから削除されません。 そのため、複数のターゲットがメッセージのコピーを受信します。 のクラスは、複数のメッセージの最初のメッセージだけを伝達する場合に便利です。 次の基本的な例は、 オブジェクトに複数の の値をポストし、その値をそのオブジェクトから読み込みます。 オブジェクトには 1 回だけ書き込むことができるため、 オブジェクトは 1 つのメッセージを受信した後は、それ以降のメッセージを破棄します。 [!code-csharp[TPLDataflow_Overview#3](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_overview/cs/program.cs#3)] [!code-vb[TPLDataflow_Overview#3](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_overview/vb/program.vb#3)] - 使用する方法を示す完全な例についてが完了すると、最初の操作の値を受信するを参照してください。[する方法: データフロー ブロックのリンクを解除](../../../docs/standard/parallel-programming/how-to-unlink-dataflow-blocks.md)です。 + を使って終了した最初の操作の値を受け取る方法の例について詳しくは、「[方法: データフロー ブロックのリンクを解除する](../../../docs/standard/parallel-programming/how-to-unlink-dataflow-blocks.md)」をご覧ください。 ### 実行ブロック 実行ブロックは、受け取ったデータのそれぞれに、ユーザーが指定したデリゲートを呼び出します。 TPL データ フロー ライブラリは の 3 つの実行ブロックの型を提供します。 @@ -139,7 +136,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPLDataflow_Overview#4](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_overview/cs/program.cs#4)] [!code-vb[TPLDataflow_Overview#4](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_overview/vb/program.vb#4)] - 持つデリゲートを使用する方法を示す完全な例については、クラスを参照してください[する方法: 実行操作時に、データ フロー ブロックでデータを受信](../../../docs/standard/parallel-programming/how-to-perform-action-when-a-dataflow-block-receives-data.md)です。 + クラスでデリゲートを使う方法を示す完全な例については、「[方法: データフロー ブロックでデータを受信したときにアクションを実行する](../../../docs/standard/parallel-programming/how-to-perform-action-when-a-dataflow-block-receives-data.md)」をご覧ください。 #### TransformBlock(TInput, TOutput) クラスは クラスに似ていますが、ソースとしてもターゲットとしても動作する点が異なります。 オブジェクトに渡すデリゲートは `TOutput` 型の値を返します。 オブジェクトに提供するデリゲートは、`System.Func` 型または`System.Func` 型を使用できます。 オブジェクトを `System.Func\` と共に使用すると、各入力要素の処理はデリゲートが返されたときに完了したと見なされます。 オブジェクトを `System.Func>` と共に使用すると、各入力要素の処理は返された オブジェクトが終了した場合にのみ、完了したと見なされます。 と同様に、この 2 つの方法を使って、 を使用して各入力要素を同期的にも非同期的にも処理することができます。 @@ -149,7 +146,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPLDataflow_Overview#5](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_overview/cs/program.cs#5)] [!code-vb[TPLDataflow_Overview#5](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_overview/vb/program.vb#5)] - 使用する完全な例についてWindows フォーム アプリケーションでイメージ処理を実行するデータフロー ブロックのネットワークで、次を参照してください。[チュートリアル: Windows フォーム アプリケーションでのデータフローの使用](../../../docs/standard/parallel-programming/walkthrough-using-dataflow-in-a-windows-forms-application.md)です。 + Windows フォーム アプリケーションでイメージ処理を実行するデータフロー ブロックのネットワークで を使う例について詳しくは、「[チュートリアル: Windows フォーム アプリケーションでのデータフローの使用](../../../docs/standard/parallel-programming/walkthrough-using-dataflow-in-a-windows-forms-application.md)」をご覧ください。 #### TransformManyBlock(TInput, TOutput) クラスは クラスに似ていますが、各入力値に 1 つの出力値を生成するのでなく、 は各入力値に出力値を生成しないか、または 1 つ以上の出力値を生成する点が異なります。 オブジェクトに提供するデリゲートは、`System.Func>` 型または`type System.Func>>` 型を使用できます。 オブジェクトを `System.Func>` と共に使用すると、各入力要素の処理はデリゲートが返されたときに完了したと見なされます。 オブジェクトを `System.Func>>` と共に使用すると、各入力要素の処理は返された `System.Threading.Tasks.Task>` オブジェクトが終了した場合にのみ、完了したと見なされます。 @@ -159,7 +156,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPLDataflow_Overview#6](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_overview/cs/program.cs#6)] [!code-vb[TPLDataflow_Overview#6](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_overview/vb/program.vb#6)] - 使用する完全な例についてデータフロー パイプラインの各入力の複数の独立した出力を生成するために、次を参照してください。[チュートリアル: データフロー パイプラインの作成](../../../docs/standard/parallel-programming/walkthrough-creating-a-dataflow-pipeline.md)です。 + を使ってデータフロー パイプラインの各入力に複数の独立した出力を生成する方法について詳しくは、「[チュートリアル: データフロー パイプラインの作成](../../../docs/standard/parallel-programming/walkthrough-creating-a-dataflow-pipeline.md)」をご覧ください。 #### 並列化の次数 すべての , オブジェクトは、ブロックが入力メッセージを処理できるようになるまで、入力メッセージをバッファリングします。 既定では、これらのクラスはメッセージを受信した順序で、一度に 1 つずつ処理します。 のオブジェクトを有効化し、並列化の次数を指定して、複数のメッセージを同時に処理することもできます。 同時実行に関する詳細については、このドキュメントの後の「並列化の次数の指定」のセクションを参照してください。 並列化の次数を設定して実行データ フロー ブロックを有効化し、同時に複数のメッセージを処理する例については、「[方法: データ フロー ブロックで並列処理の範囲を指定する](../../../docs/standard/parallel-programming/how-to-specify-the-degree-of-parallelism-in-a-dataflow-block.md)」を参照してください。 @@ -181,14 +178,14 @@ ms.lasthandoff: 10/18/2017 #### BatchBlock(T) クラスは、バッチと呼ばれる入力データのセットを、出力データの配列に結合します。 オブジェクトを作成するときに、各バッチのサイズを指定します。 オブジェクトは、指定した数の入力要素を受け取ると、その要素を含む配列を非同期的に伝達します。 オブジェクトが完了状態に設定されているが、バッチを形成するために十分な要素を含んでいない場合には、残りの入力要素を含む最終的な配列を伝達します。 - クラスは、どちらかで動作*最長一致*または*最短*モード。 既定では最長一致モードで、 オブジェクトは提供されたすべてのメッセージを受け取り、指定された数の要素を受け取った後に、配列を伝達します。 最短一致モードでは、 オブジェクトは、バッチを作成するために十分なソースがブロックへのメッセージを提供するまで、すべての受信メッセージを延期します。 最長一致モードでは通常、最短一致モードよりも処理のオーバーヘッドが低いため、パフォーマンスがよくなります。 ただし、アトミックな方法で複数のソースの使用量を調整する必要がある場合、最短一致モードを使用できます。 最短一致モードを指定するには、 コンストラクターの `False` パラメーターの `dataflowBlockOptions` へ を設定します。 + クラスは、"*最長一致*" モードまたは "*最短一致*" モードのどちらかで動作します。 既定では最長一致モードで、 オブジェクトは提供されたすべてのメッセージを受け取り、指定された数の要素を受け取った後に、配列を伝達します。 最短一致モードでは、 オブジェクトは、バッチを作成するために十分なソースがブロックへのメッセージを提供するまで、すべての受信メッセージを延期します。 最長一致モードでは通常、最短一致モードよりも処理のオーバーヘッドが低いため、パフォーマンスがよくなります。 ただし、アトミックな方法で複数のソースの使用量を調整する必要がある場合、最短一致モードを使用できます。 最短一致モードを指定するには、 コンストラクターの `False` パラメーターの `dataflowBlockOptions` へ を設定します。 次の基本的な例では、複数の の値を、バッチに 10 個の要素を持つ オブジェクトにポストします。 からすべての値が伝達されることを保証するために、この例では メソッドを呼び出します。 メソッドは オブジェクトを完了状態に設定するため、 オブジェクトは残りのすべての要素を最終バッチとして伝達します。 [!code-csharp[TPLDataflow_Overview#7](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_overview/cs/program.cs#7)] [!code-vb[TPLDataflow_Overview#7](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_overview/vb/program.vb#7)] - 使用する完全な例についてデータベース挿入操作の効率を向上させるのを参照してください。[チュートリアル: を使用して BatchBlock および BatchedJoinBlock 効率の向上を](../../../docs/standard/parallel-programming/walkthrough-using-batchblock-and-batchedjoinblock-to-improve-efficiency.md)です。 + を使ってデータベース挿入操作の効率を向上させる完全な例については、「[チュートリアル: BatchBlock および BatchedJoinBlock を使用した効率の向上](../../../docs/standard/parallel-programming/walkthrough-using-batchblock-and-batchedjoinblock-to-improve-efficiency.md)」をご覧ください。 #### JoinBlock(T1, T2, ...) クラスは、入力要素を収集して、それらの要素を含む または オブジェクトを伝達します。 クラスと クラスは、 を継承しません。 代わりに、 を実装する 、および のプロパティを提供します。 @@ -200,7 +197,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPLDataflow_Overview#8](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_overview/cs/program.cs#8)] [!code-vb[TPLDataflow_Overview#8](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_overview/vb/program.vb#8)] - 使用する完全な例について協調的なリソースを共有する最短一致モードでのオブジェクトを参照してください[する方法: JoinBlock を使用して複数のソースからのデータ読み取りに](../../../docs/standard/parallel-programming/how-to-use-joinblock-to-read-data-from-multiple-sources.md)です。 + 最短一致モードで オブジェクトを使って協調的にリソースを共有する例について詳しくは、「[方法: JoinBlock を使用して複数のソースからデータを読み込む](../../../docs/standard/parallel-programming/how-to-use-joinblock-to-read-data-from-multiple-sources.md)」をご覧ください。 #### BatchedJoinBlock(T1, T2, ...) クラスは、入力要素のバッチを収集して、それらの要素を含む `System.Tuple(IList(T1), IList(T2))` または `System.Tuple(IList(T1), IList(T2), IList(T3))` オブジェクトを伝達します。 の組み合わせであると考えることができます。 オブジェクトを作成するときに、各バッチのサイズを指定します。 は、 を実装する および のプロパティを提供します。 すべてのターゲットから指定した数の入力要素を受け取ると、 オブジェクトは、それらの要素を含む `System.Tuple(IList(T1), IList(T2))` オブジェクトを非同期的に伝達します。 @@ -210,7 +207,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPLDataflow_Overview#9](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_overview/cs/program.cs#9)] [!code-vb[TPLDataflow_Overview#9](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_overview/vb/program.vb#9)] - 使用する完全な例について結果と、プログラムがデータベースから読み取り中に発生する例外の両方をキャプチャするを参照してください。[チュートリアル: を使用して BatchBlock および BatchedJoinBlock 効率の向上を](../../../docs/standard/parallel-programming/walkthrough-using-batchblock-and-batchedjoinblock-to-improve-efficiency.md)です。 + を使用して、プログラムがデータベースを読み取る間にその結果と発生する例外の両方をキャプチャする例について詳しくは、「[チュートリアル: BatchBlock および BatchedJoinBlock を使用した効率の向上](../../../docs/standard/parallel-programming/walkthrough-using-batchblock-and-batchedjoinblock-to-improve-efficiency.md)」をご覧ください。 [[ページのトップへ](#top)] @@ -235,7 +232,7 @@ ms.lasthandoff: 10/18/2017 ### タスク スケジューラの指定 すべての定義済みのデータ フロー ブロックは TPL タスク スケジューリング メカニズムを使って、ターゲットへのデータの伝達、ソースからのデータの受け取り、データが使用可能になったときのユーザー定義のデリゲートの実行、などのアクティビティを実行します。 は、タスクをスレッドのキューに置くタスク スケジューラを表す抽象クラスです。 既定のタスク スケジューラである は、 クラスを使用して作業をキューに置き、実行します。 データ フロー ブロック オブジェクトを構成する場合、 プロパティを設定して、既定のタスク スケジューラを上書きできます。 - 同じタスク スケジューラが複数のデータ フロー ブロックを管理する場合、それらにポリシーを強制的に適用できます。 たとえば、複数のデータ フロー ブロックが、それぞれ同じ オブジェクトの排他スケジューラを対象とするように構成されている場合、これらのブロックにわたって実行されるすべての操作がシリアル化されます。 同様に、これらのブロックが同じ オブジェクトの同時スケジューラをターゲットとして構成され、そのスケジューラが最大同時実行レベルに構成されている場合、これらのブロックのすべての操作は、その同時操作の数に制限されます。 使用する例については、に並列に行うものの、書き込み操作のすべての操作とは排他的に発生するを参照して、読み取り操作を有効にするクラス[する方法: データフロー ブロックのタスク スケジューラを指定](../../../docs/standard/parallel-programming/how-to-specify-a-task-scheduler-in-a-dataflow-block.md)です。 TPL のタスク スケジューラの詳細については、 クラスに関するトピックを参照してください。 + 同じタスク スケジューラが複数のデータ フロー ブロックを管理する場合、それらにポリシーを強制的に適用できます。 たとえば、複数のデータ フロー ブロックが、それぞれ同じ オブジェクトの排他スケジューラを対象とするように構成されている場合、これらのブロックにわたって実行されるすべての操作がシリアル化されます。 同様に、これらのブロックが同じ オブジェクトの同時スケジューラをターゲットとして構成され、そのスケジューラが最大同時実行レベルに構成されている場合、これらのブロックのすべての操作は、その同時操作の数に制限されます。 クラスを使って、読み取り操作は並列で実行可能とするものの、書き込み操作はすべての操作で排他的に行う例について詳しくは、「[方法: データフロー ブロックのタスク スケジューラを指定する](../../../docs/standard/parallel-programming/how-to-specify-a-task-scheduler-in-a-dataflow-block.md)」をご覧ください。 TPL のタスク スケジューラの詳細については、 クラスに関するトピックを参照してください。 ### 並列化の次数の指定 既定では、TPL データ フロー ライブラリが提供する 3 つの実行ブロックの型、 および は、一度に 1 つのメッセージを処理します。 これらのデータ フロー ブロックの型は、メッセージを受け取った順番でそれを処理します。 データ フロー ブロックのオブジェクトを構築するときに、これらのデータ フロー ブロックがメッセージを同時に操作できるようにするには、 のプロパティを設定します。 @@ -276,13 +273,13 @@ ms.lasthandoff: 10/18/2017 ## 関連トピック -|タイトル|説明| +|Title|説明| |-----------|-----------------| |[方法: データ フロー ブロックに対してメッセージの読み取りと書き込みを行う](../../../docs/standard/parallel-programming/how-to-write-messages-to-and-read-messages-from-a-dataflow-block.md)| オブジェクトにメッセージを書き込む方法とメッセージを読み取る方法を示します。| |[方法: プロデューサー/コンシューマーのデータ フロー パターンを実装する](../../../docs/standard/parallel-programming/how-to-implement-a-producer-consumer-dataflow-pattern.md)|データ フロー モデルを使ってプロデューサー/コンシューマー パターンを実装し、プロデューサーがデータ フロー ブロックにメッセージを送信して、コンシューマーがそのブロックからメッセージを読み取る方法を示します。| |[方法: データ フロー ブロックでデータを受信したときにアクションを実行する](../../../docs/standard/parallel-programming/how-to-perform-action-when-a-dataflow-block-receives-data.md)|デリゲートを実行データ フロー ブロックの型である、 に提供する方法について説明します。| |[チュートリアル: データ フロー パイプラインの作成](../../../docs/standard/parallel-programming/walkthrough-creating-a-dataflow-pipeline.md)|Web からテキストをダウンロードし、そのテキストの操作を実行する、データ フロー パイプラインを作成する方法について説明します。| -|[方法: データ フロー ブロックのリンクを解除する](../../../docs/standard/parallel-programming/how-to-unlink-dataflow-blocks.md)|使用する方法を示します、ソースがターゲットにメッセージを提供した後に、ターゲット ブロックをソースからのリンクを解除するメソッド。| +|[方法: データ フロー ブロックのリンクを解除する](../../../docs/standard/parallel-programming/how-to-unlink-dataflow-blocks.md)| メソッドを使って、ソースがターゲットにメッセージを提供した後に、ターゲット ブロックをソースからリンク解除する方法を示します。| |[チュートリアル: Windows フォーム アプリケーションでのデータ フローの使用](../../../docs/standard/parallel-programming/walkthrough-using-dataflow-in-a-windows-forms-application.md)|Windows フォーム アプリケーションでイメージ処理を実行する、データ フロー ブロックのネットワークを作成する方法を示します。| |[方法: データ フロー ブロックをキャンセルする](../../../docs/standard/parallel-programming/how-to-cancel-a-dataflow-block.md)|Windows フォーム アプリケーションで取り消しを使う方法を説明します。| |[方法: JoinBlock を使用して複数のソースからデータを読み込む](../../../docs/standard/parallel-programming/how-to-use-joinblock-to-read-data-from-multiple-sources.md)|データが複数のソースから使用できるようになった場合に クラスを使って操作を実行する方法、および最短一致モードを使って、複数の結合ブロックがデータ ソースをより効率的に共有できる方法について説明します。| diff --git a/docs/standard/parallel-programming/exception-handling-task-parallel-library.md b/docs/standard/parallel-programming/exception-handling-task-parallel-library.md index d8e33dc2b5e..16b56078ad8 100644 --- a/docs/standard/parallel-programming/exception-handling-task-parallel-library.md +++ b/docs/standard/parallel-programming/exception-handling-task-parallel-library.md @@ -11,22 +11,26 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, exceptions +helpviewer_keywords: +- tasks, exceptions ms.assetid: beb51e50-9061-4d3d-908c-56a4f7c2e8c1 -caps.latest.revision: "21" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: e62498376d321d8ff22a53315b9d5f18a8865056 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 86b4d105b7d79abbd25b342774705866119ada68 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 例外処理 (タスク並列ライブラリ) -タスク内で実行中のユーザー コードによってスローされた、ハンドルされない例外は、呼び出し元のスレッドに反映されます。ただし、このトピックの後半で説明している特定の状況を除きます。 静的のいずれかを使用すると、例外が反映されますまたはインスタンスまたは`Wait`メソッドを処理して、それらの呼び出しを囲んで、 `try` / `catch`ステートメントです。 タスクが、アタッチされた子タスクの親である場合、または複数のタスクを待機している場合、複数の例外がスローされることがあります。 +タスク内で実行中のユーザー コードによってスローされた、ハンドルされない例外は、呼び出し元のスレッドに反映されます。ただし、このトピックの後半で説明している特定の状況を除きます。 静的な、またはインスタンスの メソッドまたは `Wait` メソッドの 1 つを使用し、その呼び出しを `try`/`catch` ステートメント内に入れて例外を処理すると、例外が反映されます。 タスクが、アタッチされた子タスクの親である場合、または複数のタスクを待機している場合、複数の例外がスローされることがあります。 - 呼び出し元のスレッドにすべての例外を反映するために、Task インフラストラクチャが例外を インスタンスにラップします。 例外には、スローされた元のすべての例外を調べるために列挙できる プロパティがあり、個々に処理したり未処理にしたりできます。 使用して、元の例外を処理することもできます、メソッドです。 + 呼び出し元のスレッドにすべての例外を反映するために、Task インフラストラクチャが例外を インスタンスにラップします。 例外には、スローされた元のすべての例外を調べるために列挙できる プロパティがあり、個々に処理したり未処理にしたりできます。 また、 メソッドを使用して元の例外を処理することもできます。 例外が 1 つだけスローされた場合でも、次の例のように 例外にラップされます。 @@ -35,7 +39,7 @@ ms.lasthandoff: 10/18/2017 ハンドルされない例外は、 をキャッチして、内部例外を確認しないことで回避できます。 ただし、並列でない状況で基本的な の種類をキャッチする場合と類似しているため、この操作はお勧めしません。 特定の操作を取得することなく例外をキャッチして回復しようとすると、プログラムが中間状態のままになるおそれがあります。 - 呼び出すしたくない場合、または`Wait`タスクの完了を待つメソッド取得することも、から、タスクの例外次の例のように、プロパティです。 詳細については、このトピックの「 [Task.Exception プロパティによる例外の確認](#ExceptionProp) 」セクションを参照してください。 + または `Wait` メソッドを呼び出してタスクの完了を待機する処理を行わない場合は、次の例のようにタスクの プロパティから 例外を取得することもできます。 詳細については、このトピックの「 [Task.Exception プロパティによる例外の確認](#ExceptionProp) 」セクションを参照してください。 [!code-csharp[TPL_Exceptions#29](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_exceptions/cs/handling22.cs#29)] [!code-vb[TPL_Exceptions#29](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_exceptions/vb/handling22.vb#29)] @@ -48,12 +52,12 @@ ms.lasthandoff: 10/18/2017 > [マイ コードのみ] が有効になっている場合、Visual Studio では、例外をスローする行で処理が中断され、"ユーザー コードで処理されない例外" に関するエラー メッセージが表示されることがあります。 このエラーは問題にはなりません。 F5 キーを押して続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio による処理が最初のエラーで中断しないようにするには、 **[ツール]** メニューの [オプション]、[デバッグ] の順にクリックし、[全般] で **[マイ コードのみを有効にする]**チェック ボックスをオフにします。 ## アタッチされた子タスクと入れ子の AggregateExceptions - タスクに、例外をスローする子タスクがアタッチされている場合、その例外は親タスクに反映される前に でラップされます。つまり、呼び出し元のスレッドに反映される前に、その例外が固有の でラップされるということです。 このような場合、のプロパティ、でキャッチされた例外、または`Wait`またはまたはメソッドは、1 つ以上含まれていますインスタンスできません、。エラーの原因となった元の例外。 反復処理しなくて済むように入れ子になったの例外を除き、行うこともできます、すべてを削除するメソッド、入れ子になったの例外を除き、ように、プロパティには、元の例外が含まれています。 次の例では、入れ子の インスタンスが 1 つのループで平坦化され、処理されています。 + タスクに、例外をスローする子タスクがアタッチされている場合、その例外は親タスクに反映される前に でラップされます。つまり、呼び出し元のスレッドに反映される前に、その例外が固有の でラップされるということです。 このような場合、 `Wait` の各メソッドでキャッチされた 例外の プロパティには、違反の原因となった元の例外ではなく、1 つ以上の インスタンスが含まれます。 入れ子の 例外を反復処理しなくて済むようにするには、 メソッドを使用して入れ子の をすべて削除します。これにより、 プロパティに元の例外が含まれるようになります。 次の例では、入れ子の インスタンスが 1 つのループで平坦化され、処理されています。 [!code-csharp[TPL_Exceptions#22](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_exceptions/cs/flatten2.cs#22)] [!code-vb[TPL_Exceptions#22](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_exceptions/vb/flatten2.vb#22)] - 使用することも、複数から内部例外を再スローするメソッドインスタンス 1 つの複数のタスクによってスローされたインスタンス、次の例を示します。 + また、次の例のように、 メソッドを使用して、単一の インスタンス内の複数のタスクによってスローされた複数の インスタンスから内部例外を再スローすることもできます。 [!code-csharp[TPL_Exceptions#13](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_exceptions/cs/taskexceptions2.cs#13)] [!code-vb[TPL_Exceptions#13](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_exceptions/vb/taskexceptions2.vb#13)] @@ -73,14 +77,14 @@ ms.lasthandoff: 10/18/2017 [!code-vb[TPL_Exceptions#4](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_exceptions/vb/tpl_exceptions.vb#4)] ## 内部例外をフィルター処理する Handle メソッドの使用 - メソッドを使用すると、"処理済み" として扱うことのできる例外をフィルターで除外できます。追加のロジックを使用する必要はありません。 用意されているユーザー デリゲートで、メソッド、例外の種類を調べることができます、プロパティ、またはその他の情報に問題があるかどうかを判断するために使用します。 デリゲートを返す任意の例外`false`新しいで再スローされますインスタンス化した直後、メソッドを返します。 + メソッドを使用すると、"処理済み" として扱うことのできる例外をフィルターで除外できます。追加のロジックを使用する必要はありません。 メソッドに用意されているユーザー デリゲートでは、例外の種類、その プロパティ、またはその例外に問題がないかどうかを判別できるその他の情報を調べることができます。 デリゲートが `false` を返す例外は、 メソッドが返された直後に新しい インスタンスで再スローされます。 - 次の例は機能的には、内の各例外を調べるこのトピックの最初の例は、コレクション。 この例外ハンドラーを呼び出す代わりに、各例外と例外に対してのみ再スローされないメソッド オブジェクト`CustomException`インスタンス。 + 次の例は、機能的には、 コレクション内の各例外を調べるこのトピックの最初の例と同じです。 代わりに、この例外ハンドラーでは、例外ごとに メソッドのオブジェクトを呼び出し、`CustomException` インスタンスでない例外のみを再スローしています。 [!code-csharp[TPL_Exceptions#26](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_exceptions/cs/handlemethod21.cs#26)] [!code-vb[TPL_Exceptions#26](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_exceptions/vb/handlemethod21.vb#26)] - 使用するより詳細な例を次に示します、に対して特別な処理を提供するメソッドをファイルを列挙中に例外が発生します。 + 次の例はさらに複雑です。 メソッドを使用して、ファイルの列挙時に 例外の特別な処理を行っています。 [!code-csharp[TPL_Exceptions#12](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_exceptions/cs/taskexceptions.cs#12)] [!code-vb[TPL_Exceptions#12](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_exceptions/vb/taskexceptions.vb#12)] @@ -97,5 +101,5 @@ ms.lasthandoff: 10/18/2017 ## UnobservedTaskException イベント 信頼関係のないプラグインをホストするときなど、シナリオによっては、問題のない例外がよく発生する場合や、難しすぎてすべてを手動で観察できなくなる場合があります。 このような場合、 イベントを処理できます。 ハンドラーに渡される インスタンスを使用して、観察されない例外が連結しているスレッドに反映されないようにすることができます。 -## 関連項目 +## 参照 [タスク並列ライブラリ (TPL)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md) diff --git a/docs/standard/parallel-programming/for-further-reading-parallel-programming.md b/docs/standard/parallel-programming/for-further-reading-parallel-programming.md index 67e2539347d..58321d70b92 100644 --- a/docs/standard/parallel-programming/for-further-reading-parallel-programming.md +++ b/docs/standard/parallel-programming/for-further-reading-parallel-programming.md @@ -8,31 +8,35 @@ ms.suite: ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article -helpviewer_keywords: tasks, further reading +helpviewer_keywords: +- tasks, further reading ms.assetid: 98aee307-dde6-4cad-bb58-078497b8064f -caps.latest.revision: "7" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 5a2477458273e5beef6b67069dce7e818906b8b6 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 304522aa791e78dda6a67ed4f4e9b6cc33505dff +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 関連項目 (並列プログラミング) -次のリソースは、.NET Framework の並列プログラミングに関する追加情報を含めます。 +次のリソースには、.NET Framework の並列プログラミングに関する追加情報が含まれます。 -- [並列コンピューティング デベロッパー センター](http://go.microsoft.com/fwlink/?LinkID=160570) MSDN Web サイトが最新のコンテンツへのリンクと、ネイティブ C++ と .NET Framework での並列プログラミングに関するフォーラムの投稿します。 +- MSDN Web サイトの[並列コンピューティングのデベロッパー センター](http://go.microsoft.com/fwlink/?LinkID=160570)には、.NET Framework 、およびネイティブ C++ の並列プログラミングに関する最新のコンテンツとフォーラム投稿へのリンクがあります。 -- [.NET ブログによる並列プログラミング](http://go.microsoft.com/fwlink/?LinkID=169627)を MSDN ブログ サイトに、.NET Framework での並列プログラミングに関する多くの詳細な記事が含まれています。 +- MSDN ブログ サイトの [.NET の並列プログラミングに関するブログ](http://go.microsoft.com/fwlink/?LinkID=169627)には、.NET Framework の並列プログラミングに関する多くの詳細な記事が含まれています。 -- [同時実行ビジュアライザー ブログ](http://go.microsoft.com/fwlink/?LinkID=169630)MSDN ブログ サイトが新しいパフォーマンス プロファイリング ツールの一部のエディションに含まれているをカバー[!INCLUDE[vs_dev10_long](../../../includes/vs-dev10-long-md.md)]です。 +- MSDN ブログ サイトの[同時実行ビジュアライザーに関するブログ](http://go.microsoft.com/fwlink/?LinkID=169630)では、[!INCLUDE[vs_dev10_long](../../../includes/vs-dev10-long-md.md)] の一部のエディションに含まれている新しいパフォーマンス プロファイリング ツールについて記述されています。 -- [並列拡張機能のフォーラム](http://go.microsoft.com/fwlink/?LinkID=169628)を MSDN フォーラム サイトは、並列プログラミングに関する質問や回答をする場所です。 +- MSDN フォーラム サイトの[並列拡張機能に関するフォーラム](http://go.microsoft.com/fwlink/?LinkID=169628)は、並列プログラミングについて質問したり、回答したりする場所です。 -- [並列拡張機能サンプル](http://go.microsoft.com/fwlink/?LinkID=165717)MSDN コード ギャラリー Web サイトのページには、中間と高度な並列プログラミング手法を示す、多数のサンプルが含まれています。 +- MSDN コード ギャラリー Web サイトの[並列拡張機能のサンプル](http://go.microsoft.com/fwlink/?LinkID=165717) ページには、中度および高度な並列プログラミング手法を示す多くのサンプルが含まれています。 -## 関連項目 +## 参照 [並列プログラミング](../../../docs/standard/parallel-programming/index.md) [Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4 (並列プログラミングのパターン: .NET Framework 4 での並列パターンの理解と適用)](http://go.microsoft.com/fwlink/?LinkID=185142) diff --git a/docs/standard/parallel-programming/how-to-cancel-a-dataflow-block.md b/docs/standard/parallel-programming/how-to-cancel-a-dataflow-block.md index 215cac10a20..5bfd7066afd 100644 --- a/docs/standard/parallel-programming/how-to-cancel-a-dataflow-block.md +++ b/docs/standard/parallel-programming/how-to-cancel-a-dataflow-block.md @@ -1,12 +1,8 @@ --- title: "方法: データフロー ブロックをキャンセルする" -ms.custom: ms.date: 03/30/2017 ms.prod: .net -ms.reviewer: -ms.suite: ms.technology: dotnet-standard -ms.tgt_pltfrm: ms.topic: article dev_langs: - csharp @@ -16,38 +12,39 @@ helpviewer_keywords: - dataflow blocks, canceling in TPL - TPL dataflow library,canceling dataflow blocks ms.assetid: fbddda0d-da3b-4ec8-a1d6-67ab8573fcd7 -caps.latest.revision: "9" author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 4d6fbde31cd4b4b5d0c6404b8baf23230f2bda77 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3ef7fa62513072e1ee0dc7a8fecf3e600f9c26f2 +ms.sourcegitcommit: 6a9030eb5bd0f00e1d144f81958adb195cfb1f6f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/10/2018 --- # 方法: データフロー ブロックをキャンセルする このドキュメントでは、アプリケーションでキャンセルを有効にする方法を示します。 この例では、Windows フォームを使用して、データフロー パイプラインで作業項目がアクティブである場所と、キャンセルの影響を示します。 + +[!INCLUDE [tpl-install-instructions](../../../includes/tpl-install-instructions.md)] -> [!TIP] -> TPL データ フローのライブラリ ( 名前空間) は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と一緒に配布されません。 インストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**プロジェクト メニューのおよびオンラインで検索から、`Microsoft.Tpl.Dataflow`パッケージ。 - -### Windows フォーム アプリケーションを作成するには +## Windows フォーム アプリケーションを作成するには 1. C# または Visual Basic の **Windows フォーム アプリケーション** プロジェクトを作成します。 以降の手順では、プロジェクトの名前は `CancellationWinForms` とします。 -2. メイン フォーム Form1.cs のフォーム デザイナーで (の Form1.vb [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)])、追加、コントロール。 +2. メイン フォーム Form1.cs ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] の場合は Form1.vb) のフォーム デザイナーで、 コントロールを追加します。 -3. 追加、コントロールをコントロール。 設定、プロパティをプロパティを**作業項目の追加**です。 +3. コントロールに コントロールを追加します。 プロパティを に設定し、 プロパティを「**作業項目の追加**」に設定します。 -4. 1 秒あたりの追加コントロールをコントロール。 設定、プロパティをプロパティを**キャンセル**、およびプロパティを`False`です。 +4. コントロールに 2 つ目の コントロールを追加します。 プロパティを に、 プロパティを「**キャンセル**」に、 プロパティを `False` に設定します。 -5. 次の 4 つの追加オブジェクトをコントロール。 +5. 4 つの コントロールを コントロールに追加します。 ## データフロー パイプラインの作成 このセクションでは、作業項目を処理して進行状況バーを更新するデータフロー パイプラインを作成する方法を示します。 -#### データフロー パイプラインを作成するには +### データフロー パイプラインを作成するには 1. プロジェクトで、System.Threading.Tasks.Dataflow.dll への参照を追加します。 @@ -71,25 +68,25 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPLDataflow_CancellationWinForms#4](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_cancellationwinforms/cs/cancellationwinforms/form1.cs#4)] [!code-vb[TPLDataflow_CancellationWinForms#4](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_cancellationwinforms/vb/cancellationwinforms/form1.vb#4)] - `incrementProgress` と `decrementProgress` のデータフロー ブロックはユーザー インターフェイスで機能するので、これらの操作をユーザー インターフェイス スレッドで実行することが重要です。 これを実現する、構築時にこれらのオブジェクトが各提供、を持つオブジェクトをプロパティに設定です。 メソッドは、現行の同期コンテキストで作業を実行する オブジェクトを作成します。 `Form1` コンストラクターはユーザー インターフェイス スレッドから呼び出されるので、`incrementProgress` および `decrementProgress` データフロー ブロックに対するアクションも、ユーザー インターフェイス スレッドで実行されます。 + `incrementProgress` と `decrementProgress` のデータフロー ブロックはユーザー インターフェイスで機能するので、これらの操作をユーザー インターフェイス スレッドで実行することが重要です。 これを実現するため、構築時にこれらのオブジェクトは プロパティが に設定された オブジェクトを提供します。 メソッドは、現行の同期コンテキストで作業を実行する オブジェクトを作成します。 `Form1` コンストラクターはユーザー インターフェイス スレッドから呼び出されるので、`incrementProgress` および `decrementProgress` データフロー ブロックに対するアクションも、ユーザー インターフェイス スレッドで実行されます。 - この例では設定、プロパティ、パイプラインのメンバーを作成するときにします。 プロパティが完全にデータ フロー ブロックの実行をキャンセル、ユーザーが操作をキャンセルし、次がパイプラインに多くの作業項目を追加した後、全体のパイプラインを再作成する必要があります。 操作をキャンセルした後も他の作業を実行できるようにデータフロー ブロックをキャンセルする方法もあります。例については、「[チュートリアル: Windows フォーム アプリケーションでのデータフローの使用](../../../docs/standard/parallel-programming/walkthrough-using-dataflow-in-a-windows-forms-application.md)」を参照してください。 + この例では、パイプラインのメンバーを構築するときに プロパティを設定します。 プロパティはデータフロー ブロックの実行を完全にキャンセルするので、ユーザーが操作をキャンセルした後にパイプラインにさらに作業項目を追加する場合は、すべてのパイプラインを作り直す必要があります。 操作をキャンセルした後も他の作業を実行できるようにデータフロー ブロックをキャンセルする方法もあります。例については、「[チュートリアル: Windows フォーム アプリケーションでのデータフローの使用](../../../docs/standard/parallel-programming/walkthrough-using-dataflow-in-a-windows-forms-application.md)」を参照してください。 ## ユーザー インターフェイスへのデータフロー パイプラインの接続 このセクションでは、ユーザー インターフェイスにデータフロー パイプラインを接続する方法を説明します。 パイプラインの作成とパイプラインへの作業項目の追加は、どちらも **[作業項目の追加]** ボタンのインベント ハンドラーによって制御されます。 キャンセルは **[キャンセル]** ボタンによって開始されます。 ユーザーがこのいずれかのボタンをクリックすると、適切な操作が非同期的に開始されます。 -#### ユーザー インターフェイスにデータフロー パイプラインを接続するには +### ユーザー インターフェイスにデータフロー パイプラインを接続するには -1. メイン フォームのフォーム デザイナーでのイベント ハンドラーを作成、イベントを**作業項目の追加**ボタンをクリックします。 +1. メイン フォームのフォーム デザイナーで、**[作業項目の追加]** ボタンの イベントのイベント ハンドラーを作成します。 -2. 実装、イベントを**作業項目の追加**ボタンをクリックします。 +2. **[作業項目の追加]** ボタンの イベントを実装します。 [!code-csharp[TPLDataflow_CancellationWinForms#5](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_cancellationwinforms/cs/cancellationwinforms/form1.cs#5)] [!code-vb[TPLDataflow_CancellationWinForms#5](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_cancellationwinforms/vb/cancellationwinforms/form1.vb#5)] -3. メイン フォームのフォーム デザイナーでのイベント ハンドラーを作成、のイベント ハンドラー、**キャンセル**ボタンをクリックします。 +3. メイン フォームのフォーム デザイナーで、**[キャンセル]** ボタンの イベント ハンドラーのイベント ハンドラーを作成します。 -4. 実装、のイベント ハンドラー、**キャンセル**ボタンをクリックします。 +4. **[キャンセル]** ボタンの イベント ハンドラーを実装します。 [!code-csharp[TPLDataflow_CancellationWinForms#6](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_cancellationwinforms/cs/cancellationwinforms/form1.cs#6)] [!code-vb[TPLDataflow_CancellationWinForms#6](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_cancellationwinforms/vb/cancellationwinforms/form1.vb#6)] @@ -103,8 +100,6 @@ ms.lasthandoff: 10/18/2017 次の図は、実行中のアプリケーションを示しています。 ![Windows フォーム アプリケーション](../../../docs/standard/parallel-programming/media/tpldataflow-cancellation.png "TPLDataflow_Cancellation") - -## 信頼性の高いプログラミング - -## 関連項目 + +## 参照 [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/how-to-cancel-a-parallel-for-or-foreach-loop.md b/docs/standard/parallel-programming/how-to-cancel-a-parallel-for-or-foreach-loop.md index e35cebc8cbe..75964ee7950 100644 --- a/docs/standard/parallel-programming/how-to-cancel-a-parallel-for-or-foreach-loop.md +++ b/docs/standard/parallel-programming/how-to-cancel-a-parallel-for-or-foreach-loop.md @@ -15,27 +15,30 @@ helpviewer_keywords: - parallel foreach loop, how to cancel - parallel for loops, how to cancel ms.assetid: 9d19b591-ea95-4418-8ea7-b6266af9905b -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 3f82c5758e02b4beebf035fe8f43f856447855a3 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: e3d2ba6776a46573599e581cbfdeb62d181b81e0 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: Parallel.For または ForEach ループを取り消す -メソッドは、キャンセル トークンを使用して取り消しをサポートします。 取り消し処理の詳細については一般を参照してください[キャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md)です。 並列ループで指定する、内のメソッドに、パラメーター try catch ブロックで並列呼び出しを囲みます。 + および メソッドでは、キャンセル トークンを使用した取り消し処理がサポートされます。 一般的な取り消し処理の詳細については、「[キャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md)」を参照してください。 並列ループでは、 パラメーターのメソッドに を指定してから、try-catch ブロックで並列呼び出しを囲みます。 ## 例 - 次の例への呼び出しを取り消す方法を示しています。です。 同じアプローチを適用することができます、呼び出します。 + 次の例は、 の呼び出しを取り消す方法を示しています。 呼び出しに同じ方法を適用できます。 [!code-csharp[TPL_Parallel#29](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_parallel/cs/parallel_cancel.cs#29)] [!code-vb[TPL_Parallel#29](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_parallel/vb/cancelloop.vb#29)] - 取り消しを通知するトークンが同じ場合はトークンで指定されている、インスタンス、並列ループは、1 つをスローし、キャンセルします。 その他のいくつかのトークンには、キャンセルが発生する場合、ループがスローされます、で、内部例外として。 + 取り消しを通知するトークンが インスタンスで指定されているのと同じトークンである場合、並列ループは取り消し時に単一の をスローします。 その他のいくつかのトークンによって取り消しが行われた場合、ループは InnerException として と共に をスローします。 -## 関連項目 +## 参照 [データの並列化](../../../docs/standard/parallel-programming/data-parallelism-task-parallel-library.md) [PLINQ および TPL のラムダ式](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md) diff --git a/docs/standard/parallel-programming/how-to-cancel-a-plinq-query.md b/docs/standard/parallel-programming/how-to-cancel-a-plinq-query.md index 50c8b97ad25..1bc5d9d7114 100644 --- a/docs/standard/parallel-programming/how-to-cancel-a-plinq-query.md +++ b/docs/standard/parallel-programming/how-to-cancel-a-plinq-query.md @@ -15,49 +15,52 @@ helpviewer_keywords: - PLINQ queries, how to cancel - cancellation, PLINQ ms.assetid: 80b14640-edfa-4153-be1b-3e003d3e9c1a -caps.latest.revision: "16" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: d8031758462df45c030b8b75a3507f1bfb44bfd0 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 5ed3d38cdfd70e7588ba0c4d94816c7105c7cf3e +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: PLINQ クエリを取り消す -次の例では、PLINQ クエリを取り消すための 2 つの方法を示します。 最初の例では、データ移動のほとんどの場合で構成されているクエリをキャンセルする方法を示します。 2 番目の例では、ユーザー関数は計算コストが高いを含むクエリをキャンセルする方法を示します。 +次の例は、PLINQ クエリを取り消す 2 つの方法を示しています。 最初の例は、主にデータ トラバーサルで構成されるクエリを取り消す方法を示しています。 2 つ目の例は、負荷の大きいユーザー関数を含むクエリを取り消す方法を示しています。 > [!NOTE] -> 「マイ コードのみ」を有効にすると、Visual Studio は例外をスローする行で中断し、「で処理されない例外ユーザー コードです」というエラー メッセージを表示 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio の最初のエラーの処理は中断を防ぐために下にある [マイ コードのみ] チェック ボックスをオフにだけ**ツール、オプション、デバッグ、一般的な**します。 +> [マイ コードのみ] が有効になっている場合、Visual Studio では、例外をスローする行で処理が中断され、"ユーザー コードで処理されない例外" に関するエラー メッセージが表示されます。 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio による処理が最初のエラーで中断しないようにするには、**[ツール] メニューの [オプション]、[デバッグ] 、[全般]** の順にクリックし、[マイ コードのみ] チェック ボックスをオフにします。 > -> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、次を参照してください。 [PLINQ で高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)です。 +> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、「[PLINQ での高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 ## 例 [!code-csharp[PLINQ#16](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#16)] [!code-vb[PLINQ#16](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinqsnippets1.vb#16)] - PLINQ フレームワークは、1 つをロールバックできませんに、 ;個別の catch ブロックで処理する必要があります。 1 つまたは複数のユーザー デリゲート、OperationCanceledException(externalCT) をスローした場合 (外部を使用して、 ) として定義されていないその他の例外、およびクエリ`AsParallel().WithCancellation(externalCT)`、PLINQ は、1 つを発行し、 (externalCT) ではなく、. ただし、1 人のユーザーの委任をスロー、 、別のデリゲートを別の種類の例外をスローし、両方の例外にロールバックされます、です。 + PLINQ フレームワークでは単一の にローリングされません。 は別個のキャッチ ブロックで処理する必要があります。 1 つ以上のユーザー デリゲートが (外部の を使用して) OperationCanceledException(externalCT) をスローし、他の例外はスローしない場合で、クエリが `AsParallel().WithCancellation(externalCT)` として定義されている場合は、PLINQ は ではなく、単一の (externalCT) を発行します。 ただし、1 つのユーザー デリゲートが をスローし、別のデリゲートが別の種類の例外をスローした場合、両方の例外が にローリングされます。 - 取り消しの一般的なガイダンスは次のとおりです。 + 取り消しに関する一般的なガイダンスは次のとおりです。 -1. ユーザー デリゲートの取り消し処理を実行する場合は、外部について PLINQ を通知する必要がありますをスローし、 (externalCT)。 +1. ユーザー デリゲートを取り消す場合、外部の について PLINQ に通知し、(externalCT) をスローする必要があります。 -2. 取り消しが発生したその他の例外がスローされなかった場合は、し、処理、ではなく、です。 +2. 取り消しが発生し、その他の例外がスローされない場合は、 ではなく を処理する必要があります。 ## 例 - 次の例では、ユーザー コードで計算コストが高い関数があるときに取り消しを処理する方法を示します。 + 次の例は、ユーザー コードで負荷が大きい関数を使用する場合の取り消しの処理方法を示しています。 [!code-csharp[PLINQ#17](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#17)] [!code-vb[PLINQ#17](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinqsnippets1.vb#17)] - ユーザー コードでキャンセルを処理する場合を使用する必要はありませんクエリ定義にします。 ただし、お勧めするこれを行うためクエリのパフォーマンスに影響を与えませんし、クエリ演算子と、ユーザー コードで処理するキャンセル可能になります。 + ユーザー コードで取り消しを処理する場合、クエリ定義で を使用する必要はありません。 ただし、 がクエリのパフォーマンスに影響を与えることはなく、クエリ演算子とユーザー コードで取り消しを処理できるため、このようにすることをお勧めします。 - システムの応答性を確保できるように、ことをお勧めミリ秒ごとに 1 回の周囲のキャンセルをチェックします。ただし、10 ミリ秒までの任意の期間の許容と見なされます。 この頻度では、コードのパフォーマンスに悪影響を与えるを必要はありません。 + システムの応答性を確保できるように、ミリ秒単位で取り消しを確認することをお勧めします。ただし、許容可能と見なされるのは 10 ミリ秒までです。 この頻度であれば、コードのパフォーマンスに悪影響を与えることはありません。 - 列挙子が破棄されると、コードがクエリ結果を反復処理する foreach (Visual Basic では各) For ループ外分割される場合など、クエリがキャンセルされるが例外はスローされません。 + 列挙子が破棄された場合、たとえば、クエリ結果を反復処理している foreach (Visual Basic では For Each) ループからコードが抜け出た場合、クエリは取り消されますが、例外はスローされません。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) [マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md) diff --git a/docs/standard/parallel-programming/how-to-cancel-a-task-and-its-children.md b/docs/standard/parallel-programming/how-to-cancel-a-task-and-its-children.md index 0c4cd614753..4b8157c7814 100644 --- a/docs/standard/parallel-programming/how-to-cancel-a-task-and-its-children.md +++ b/docs/standard/parallel-programming/how-to-cancel-a-task-and-its-children.md @@ -11,17 +11,21 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, how to cancel +helpviewer_keywords: +- tasks, how to cancel ms.assetid: 08574301-8331-4719-ad50-9cf7f6ff3048 -caps.latest.revision: "16" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 374068694a3aa9724905964717dc5e77c09fc0ab -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: ecccd5ddd3ff662b03ae7078aabaf58e397f7003 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: タスクとその子を取り消す 以下の例では、次のタスクを実行する方法を説明します。 @@ -42,9 +46,9 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[TPL_Cancellation#04](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_cancellation/cs/cancel1.cs#04)] [!code-vb[TPL_Cancellation#04](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_cancellation/vb/cancel1.vb#04)] - クラスは、 の型および の型に基づくキャンセル モデルに完全に統合されています。 詳細については、次を参照してください。[マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md)と[タスクのキャンセル](../../../docs/standard/parallel-programming/task-cancellation.md)です。 + クラスは、 の型および の型に基づくキャンセル モデルに完全に統合されています。 詳細については、「[マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md)」と「[タスクのキャンセル](../../../docs/standard/parallel-programming/task-cancellation.md)」を参照してください。 -## 関連項目 +## 参照 diff --git a/docs/standard/parallel-programming/how-to-combine-parallel-and-sequential-linq-queries.md b/docs/standard/parallel-programming/how-to-combine-parallel-and-sequential-linq-queries.md index ff72c5dbd32..28cea2fad7b 100644 --- a/docs/standard/parallel-programming/how-to-combine-parallel-and-sequential-linq-queries.md +++ b/docs/standard/parallel-programming/how-to-combine-parallel-and-sequential-linq-queries.md @@ -11,32 +11,36 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: parallel queries, combine parallel and sequential +helpviewer_keywords: +- parallel queries, combine parallel and sequential ms.assetid: 1167cfe6-c8aa-4096-94ba-c66c3a4edf4c -caps.latest.revision: "10" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 4da91ff535059b181baa637164a854cd75d06334 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 02e3af91525b75df051b73587eb3e7cd8ede5504 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 並列および順次の LINQ クエリを連結する -この例を使用する方法を示しています、 PLINQ クエリのすべての後続演算子を順番に処理するように指示します。 順次処理は通常、並列処理よりも遅くなりますが、場合によっては必要正しい結果を生成します。 +この例では、PLINQ にクエリ内の後続のすべての演算子を順次処理するように指示する メソッドの使用方法を示します。 通常、順次処理は並列処理よりも遅いですが、正しい結果を出すためにこれが必要な場合もあります。 > [!WARNING] -> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、次を参照してください。 [PLINQ で高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)です。 +> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、「[PLINQ での高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 ## 例 - 次の例では、1 つのシナリオを示しますをつまりする、必要なクエリの前の句で確立された順序を保持します。 + 次の例は、クエリの前の句で確立された順序を保持する が必要な 1 つのシナリオを示します。 [!code-csharp[PLINQ#24](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#24)] [!code-vb[PLINQ#24](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinqsnippets1.vb#24)] ## コードのコンパイル - コンパイルして、このコードを実行、貼り付けます、 [PLINQ データのサンプル](../../../docs/standard/parallel-programming/plinq-data-sample.md)プロジェクトで、行を追加してからメソッドを呼び出す`Main`、f5 キーを押します。 + このコードをコンパイルして実行するには、これを [PLINQ データのサンプル](../../../docs/standard/parallel-programming/plinq-data-sample.md) プロジェクトに貼り付けて、`Main` からメソッドを呼び出す行を追加し、F5 キーを押します。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/how-to-control-ordering-in-a-plinq-query.md b/docs/standard/parallel-programming/how-to-control-ordering-in-a-plinq-query.md index 3151bc8da46..baeeec3168d 100644 --- a/docs/standard/parallel-programming/how-to-control-ordering-in-a-plinq-query.md +++ b/docs/standard/parallel-programming/how-to-control-ordering-in-a-plinq-query.md @@ -11,46 +11,50 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, how to control ordering +helpviewer_keywords: +- PLINQ queries, how to control ordering ms.assetid: c67eccc7-004d-4b2f-987e-919cbbd62ef7 -caps.latest.revision: "10" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: b9e29aa825a68154e32a34a23ca170258092b88a -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3aef90c1a1160905662f93a83d6536f6d804b179 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: PLINQ クエリの順序を制御する -これらの例を使用して PLINQ クエリの順序を制御する方法を示して、拡張メソッド。 +以下の例では、 拡張メソッドを使用して PLINQ クエリの順序を制御する方法を示します。 > [!WARNING] -> これらの例は、使用法を説明するものでは、主に可能性がありますや、可能性がありますいないほど高速で、同等の連続した LINQ to Objects クエリ。 +> これらの例は使用法を示すことを主な目的としており、同等の LINQ to Objects 順次クエリよりも実行速度が速い場合もあれば遅い場合もあります。 ## 例 - 次の例では、ソース シーケンスの順序を維持します。 これは、操作は必要です。など一部のクエリ演算子では、正しい結果を生成するために、順序付けられたソース シーケンスが必要です。 + 次の例では、ソース シーケンスの順序を維持します。 この操作が必要になるのは、たとえば、正確な結果を生成するためにクエリ演算子で順序ありのソース シーケンスが求められる場合です。 [!code-csharp[PLINQ#12](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#12)] [!code-vb[PLINQ#12](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinqsnippets1.vb#12)] ## 例 - クエリ演算子を順序付けるがソース シーケンスが求められるを次の例に示します。 これらの演算子は、順序なしのシーケンスで機能しますが、予期しない結果が生じる可能性があります。 + 次の例は、ソース シーケンスで順序付けが求められるクエリ演算子を示しています。 これらの演算子は、順序なしのシーケンスで動作しますが、予測できない結果を生成する場合があります。 [!code-csharp[PLINQ#14](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#14)] [!code-vb[PLINQ#14](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinqsnippets1.vb#14)] - このメソッドを実行する、PLINQDataSample クラス内に貼り付け、 [PLINQ データのサンプル](../../../docs/standard/parallel-programming/plinq-data-sample.md)プロジェクトし、F5 キーを押します。 + このメソッドを実行するには、[PLINQ Data Sample](../../../docs/standard/parallel-programming/plinq-data-sample.md) プロジェクトの PLINQDataSample クラスに貼り付け、F5 キーを押します。 ## 例 - 次の例では、クエリの最初の部分の順序を維持し、join 句のパフォーマンスを向上する順序を削除し、最終的な結果のシーケンスに順序を適用する方法を示します。 + 次の例は、クエリの最初の部分で順序を維持した後に、join 句のパフォーマンスを向上させるために順序を削除し、最終的な結果に順序を再適用する方法を示しています。 [!code-csharp[PLINQ#15](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#15)] [!code-vb[PLINQ#15](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinqsnippets1.vb#15)] - このメソッドを実行する、PLINQDataSample クラス内に貼り付け、 [PLINQ データのサンプル](../../../docs/standard/parallel-programming/plinq-data-sample.md)プロジェクトし、F5 キーを押します。 + このメソッドを実行するには、[PLINQ Data Sample](../../../docs/standard/parallel-programming/plinq-data-sample.md) プロジェクトの PLINQDataSample クラスに貼り付け、F5 キーを押します。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/how-to-create-and-execute-a-simple-plinq-query.md b/docs/standard/parallel-programming/how-to-create-and-execute-a-simple-plinq-query.md index 90a4e87e0a3..18b7974ee15 100644 --- a/docs/standard/parallel-programming/how-to-create-and-execute-a-simple-plinq-query.md +++ b/docs/standard/parallel-programming/how-to-create-and-execute-a-simple-plinq-query.md @@ -11,17 +11,21 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, how to create +helpviewer_keywords: +- PLINQ queries, how to create ms.assetid: 983b4213-bddd-4a44-9262-cbe59186df4c -caps.latest.revision: "14" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: a99eedc05bbf8d4dcd58e46b484bd57c29f70886 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 20b1be451e53a81dd0631a89310a5b884aa83166 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 単純な PLINQ クエリを作成して実行する 次の例に、ソース シーケンスに対する 拡張メソッドを使用して単純な並列 LINQ クエリを作成し、 メソッドを使用して、そのクエリを実行する方法を示します。 @@ -33,7 +37,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[PLINQ#11](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/create1.cs#11)] [!code-vb[PLINQ#11](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/create1.vb#11)] - この例で示しているのは、結果シーケンスの順序付けが重要ではない場合に、並列 LINQ クエリを作成して実行する基本的なパターンです。通常、順序なしのクエリは、順序ありのクエリより高速になります。 このクエリはソースを、複数のスレッドで非同期的に実行した複数のタスクにパーティション分割します。 各タスクが完了する順序は、その特定のパーティションに含まれる要素を処理するために必要な作業量だけでなく、オペレーティング システムが各スレッドをどのようにスケジュールするかといった外部要因にも依存します。 この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、次を参照してください。 [PLINQ で高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)です。 クエリ内の要素の順序を維持する方法の詳細については、次を参照してください。[する方法: PLINQ クエリの順序付けコントロール](../../../docs/standard/parallel-programming/how-to-control-ordering-in-a-plinq-query.md)です。 + この例で示しているのは、結果シーケンスの順序付けが重要ではない場合に、並列 LINQ クエリを作成して実行する基本的なパターンです。通常、順序なしのクエリは、順序ありのクエリより高速になります。 このクエリはソースを、複数のスレッドで非同期的に実行した複数のタスクにパーティション分割します。 各タスクが完了する順序は、その特定のパーティションに含まれる要素を処理するために必要な作業量だけでなく、オペレーティング システムが各スレッドをどのようにスケジュールするかといった外部要因にも依存します。 この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、「[PLINQ での高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 クエリの要素の順序を保持する方法の詳細については、「[方法: PLINQ クエリの順序を制御する](../../../docs/standard/parallel-programming/how-to-control-ordering-in-a-plinq-query.md)」を参照してください。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/how-to-create-pre-computed-tasks.md b/docs/standard/parallel-programming/how-to-create-pre-computed-tasks.md index 49826dc7e6d..f82882e2608 100644 --- a/docs/standard/parallel-programming/how-to-create-pre-computed-tasks.md +++ b/docs/standard/parallel-programming/how-to-create-pre-computed-tasks.md @@ -11,28 +11,32 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, creating pre-computed +helpviewer_keywords: +- tasks, creating pre-computed ms.assetid: a73eafa2-1f49-4106-a19e-997186029b58 -caps.latest.revision: "6" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 4596b28afe48aad4a84a7dd72b4a1d44a9ada8a2 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 262aa626e9e426da94de0d2ad5f2ef04a5bbc5f3 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 事前計算済みのタスクを作成する -このドキュメントを使用する方法について説明、キャッシュ内に保持されている非同期ダウンロード操作の結果を取得します。 メソッドは、完成したを返しますとして指定された値を保持するオブジェクト、プロパティです。 このメソッドは オブジェクトの結果があらかじめ計算されている オブジェクトを返す、非同期操作を実行する場合に便利です。 +このドキュメントでは、キャッシュに保持されている非同期ダウンロード操作の結果を取得する メソッドの使用方法について説明します。 メソッドは、 プロパティとして指定された値を保持する、完成した オブジェクトを返します。 このメソッドは オブジェクトの結果があらかじめ計算されている オブジェクトを返す、非同期操作を実行する場合に便利です。 ## 例 - 次の例は、文字列を web からダウンロードします。 定義する、`DownloadStringAsync`メソッドです。 このメソッドは、非同期的に、web から文字列をダウンロードします。 またこの例では、以前の操作の結果をキャッシュするオブジェクト。 入力のアドレスがこのキャッシュに保持されている場合`DownloadStringAsync`を使用して、を生成するメソッド、そのアドレスでコンテンツを保持するオブジェクト。 それ以外の場合、 `DownloadStringAsync` web からファイルをダウンロードし、結果をキャッシュに追加します。 + 次の例では、Web から文字列をダウンロードします。 これは `DownloadStringAsync` を定義します。 このメソッドでは、Web から非同期的に文字列をダウンロードします。 また、この例では オブジェクトを使用して、前の操作の結果をキャッチします。 入力アドレスがこのキャッシュに保持されている場合、`DownloadStringAsync` では メソッドを使用して、そのアドレスでコンテンツを保持する オブジェクトを生成します。 それ以外の場合、`DownloadStringAsync` では Web からファイルをダウンロードし、結果をキャッシュに追加します。 [!code-csharp[TPL_CachedDownloads#1](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_cacheddownloads/cs/cacheddownloads.cs#1)] [!code-vb[TPL_CachedDownloads#1](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_cacheddownloads/vb/cacheddownloads.vb#1)] - この例では、複数の文字列を 2 回ダウンロードするために必要な時間を計算します。 結果がキャッシュに保持されているために、ダウンロード操作の 2 番目のセットは、最初のセットよりも時間を短縮する必要があります。 メソッドにより、`DownloadStringAsync`メソッドを作成これらを保持するオブジェクトは、結果を事前計算します。 + この例では、複数の文字列を 2 回ダウンロードするために必要な時間を計算します。 結果がキャッシュに保持されているため、ダウンロード操作の 2 番目のセットにかかる時間は最初のセットより短くなります。 メソッドを使用することで、`DownloadStringAsync` メソッドでこれらの事前計算済みの結果を保持する オブジェクトを作成することができます。 ## コードのコンパイル コード例をコピーし、Visual Studio プロジェクトに貼り付けるか、`CachedDownloads.cs` ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `CachedDownloads.vb`) という名前のファイルに貼り付けてから、Visual Studio のコマンド プロンプト ウィンドウで次のコマンドを実行します。 @@ -47,5 +51,5 @@ ms.lasthandoff: 10/18/2017 ## 信頼性の高いプログラミング -## 関連項目 +## 参照 [タスク ベースの非同期プログラミング](../../../docs/standard/parallel-programming/task-based-asynchronous-programming.md) diff --git a/docs/standard/parallel-programming/how-to-handle-exceptions-in-a-plinq-query.md b/docs/standard/parallel-programming/how-to-handle-exceptions-in-a-plinq-query.md index 28b34f0885b..c40c8c976f6 100644 --- a/docs/standard/parallel-programming/how-to-handle-exceptions-in-a-plinq-query.md +++ b/docs/standard/parallel-programming/how-to-handle-exceptions-in-a-plinq-query.md @@ -11,49 +11,53 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, how to handle exceptions +helpviewer_keywords: +- PLINQ queries, how to handle exceptions ms.assetid: 8d56ff9b-a571-4d31-b41f-80c0b51b70a5 -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 209e0c1bf89f231d03647ae4351279bfdb172e68 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: db3e09bc2b285d014a7d3a6ed6fc4e50f85b537d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: PLINQ クエリの例外を処理する -このトピックの最初の例は、処理する方法を示しています、を実行すると、PLINQ クエリからスローされることができます。 2 番目の例では、例外がスローされますにできるだけ近い、デリゲート内で、try-catch ブロックを配置する方法を示します。 これによりとすぐに、発生する可能性のあるクエリの実行を続行して、キャッチすることができます。 連結しているスレッドへ例外が上方向へ通知されると、例外が発生した後も、クエリによって一部の項目の処理が続行される可能性があります。 +このトピックの最初の例では、PLINQ クエリの実行時にスローされる の処理方法を示します。 2 番目の例では、デリゲート内で例外がスローされる場所のできるだけ近くに try-catch ブロックを配置する方法を示します。 こうすると、発生の直後に例外をキャッチしてクエリの実行を続行できる可能性があります。 連結しているスレッドへ例外が上方向へ通知されると、例外が発生した後も、クエリによって一部の項目の処理が続行される可能性があります。 - 場合によっては PLINQ に戻って、シーケンシャル実行と、例外が発生するときに例外が直接反映されでラップされません、です。 また、 s が直接反映常にします。 + 場合によっては、PLINQ が順次実行に戻り、例外が発生すると、例外が直接反映され、 にラップされないことがあります。 また、 は常に直接反映されます。 > [!NOTE] -> 「マイ コードのみ」を有効にすると、Visual Studio は例外をスローする行で中断し、「で処理されない例外ユーザー コードです」というエラー メッセージを表示 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio の最初のエラーの処理は中断を防ぐために下にある [マイ コードのみ] チェック ボックスをオフにだけ**ツール、オプション、デバッグ、一般的な**します。 +> [マイ コードのみ] が有効になっている場合、Visual Studio では、例外をスローする行で処理が中断され、"ユーザー コードで処理されない例外" に関するエラー メッセージが表示されます。 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio による処理が最初のエラーで中断しないようにするには、**[ツール] メニューの [オプション]、[デバッグ] 、[全般]** の順にクリックし、[マイ コードのみ] チェック ボックスをオフにします。 > -> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、次を参照してください。 [PLINQ で高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)です。 +> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、「[PLINQ での高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 ## 例 - この例をキャッチするクエリを実行するコードの周り、try-catch ブロックを配置する方法を示しています。 s は、スローされます。 + 次の例は、スローされる をキャッチするクエリを実行するコードの近くに try-catch ブロックを配置する方法を示しています。 [!code-csharp[PLINQ#41](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#41)] [!code-vb[PLINQ#41](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinqsnippets1.vb#41)] - この例では、クエリは、例外がスローされた後に続行できません。 時点では、アプリケーション コードが例外をキャッチ、PLINQ は既に停止クエリすべてのスレッドにします。 + この例では、例外がスローされた後にクエリを続行することはできません。 アプリケーション コードが例外をキャッチするまでに、PLINQ はすべてのスレッド上でクエリを停止しています。 ## 例 - 次の例では、デリゲートで例外をキャッチし、クエリの実行を続行できるようにすることで、try-catch ブロックを配置する方法を示します。 + 次の例は、例外をキャッチしてクエリの実行を続行できるようにするため、try-catch ブロックをデリゲートに配置する方法を示しています。 [!code-csharp[PLINQ#42](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#42)] [!code-vb[PLINQ#42](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinqsnippets1.vb#42)] ## コードのコンパイル -- コンパイルして、これらの例を実行、PLINQ データのサンプルにコピーし、Main からメソッドを呼び出します。 +- これらの例をコンパイルして実行するには、これらのコードを PLINQ データのサンプルにコピーして、Main からメソッドを呼び出します。 ## 信頼性の高いプログラミング - プログラムの状態が破損しないように、それを処理する方法を理解していない限り例外をキャッチしません。 + プログラムの状態を破損しないようにするため、処理方法がわからない場合は、例外をキャッチしないでください。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/how-to-handle-exceptions-in-parallel-loops.md b/docs/standard/parallel-programming/how-to-handle-exceptions-in-parallel-loops.md index e759eb29d26..25c909f582f 100644 --- a/docs/standard/parallel-programming/how-to-handle-exceptions-in-parallel-loops.md +++ b/docs/standard/parallel-programming/how-to-handle-exceptions-in-parallel-loops.md @@ -11,17 +11,21 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: parallel loops, how to handle exceptions +helpviewer_keywords: +- parallel loops, how to handle exceptions ms.assetid: 512f0d5a-4636-4875-b766-88f20044f143 -caps.latest.revision: "14" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 98e822bc148bbe5879a9ff0b7c47e9124b68e612 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f6df28a019c2a21cc6ef94367553e0e5eaa1ad30 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 並列ループの例外を処理する および のオーバーロード には、スローされる可能性のある例外を処理する特別な仕組みはありません。 この点では、標準の `for` ループおよび `foreach` ループ (Visual Basic では `For` と `For Each`) と似ており、処理されない例外でループはすぐに終了します。 @@ -29,7 +33,7 @@ ms.lasthandoff: 11/21/2017 独自の例外処理のロジックを並列ループに追加する場合は、同様の例外が複数のスレッドに同時にスローされるケース、および特定のスレッドにスローされる例外が、別のスレッドに別の例外をスローするケースを処理してください。 のループからすべての例外をラップすることで、両方のケースを処理できます。 考えられる方法の 1 つの例を次に示します。 > [!NOTE] -> [マイ コードのみ] が有効になっている場合、Visual Studio では、例外をスローする行で処理が中断され、"ユーザー コードで処理されない例外" に関するエラー メッセージが表示されることがあります。 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio の最初のエラーの処理は中断を防ぐために下にある [マイ コードのみ] チェック ボックスをオフにだけ**ツール、オプション、デバッグ、一般的な**します。 +> [マイ コードのみ] が有効になっている場合、Visual Studio では、例外をスローする行で処理が中断され、"ユーザー コードで処理されない例外" に関するエラー メッセージが表示されることがあります。 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio による処理が最初のエラーで中断しないようにするには、**[ツール] メニューの [オプション]、[デバッグ] 、[全般]** の順にクリックし、[マイ コードのみ] チェック ボックスをオフにします。 ## 例 この例では、すべての例外がキャッチされた後に にラップされ、スローされます。 呼び出し元は、どの例外を処理するかを決定できます。 @@ -37,6 +41,6 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[TPL_Exceptions#08](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_exceptions/cs/exceptions.cs#08)] [!code-vb[TPL_Exceptions#08](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_exceptions/vb/exceptionsinloops.vb#08)] -## 関連項目 +## 参照 [データの並列化](../../../docs/standard/parallel-programming/data-parallelism-task-parallel-library.md) [PLINQ および TPL のラムダ式](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md) diff --git a/docs/standard/parallel-programming/how-to-implement-a-partitioner-for-static-partitioning.md b/docs/standard/parallel-programming/how-to-implement-a-partitioner-for-static-partitioning.md index 73201dc6284..d0e97a6dac1 100644 --- a/docs/standard/parallel-programming/how-to-implement-a-partitioner-for-static-partitioning.md +++ b/docs/standard/parallel-programming/how-to-implement-a-partitioner-for-static-partitioning.md @@ -8,25 +8,29 @@ ms.suite: ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article -helpviewer_keywords: tasks, how to create a static partitioner +helpviewer_keywords: +- tasks, how to create a static partitioner ms.assetid: f4410508-cac6-4ba7-bef1-c5e68b2794f3 -caps.latest.revision: "6" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: b28ff0bb8436fefc4956918889435e258ae98b12 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 125bef8d43e16c120e88250a4d9d5a4ff3f63dba +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 静的パーティション分割用にパーティショナーを実装する -次の例は、plinq が静的パーティション分割を実行する場合は、単純なカスタム パーティショナーを実装する方法を示しています。 パーティショナーは動的なパーティションがサポートされていませんはから利用できるです。 このパーティショナーは、データ ソースの各要素が大量の処理時間が必要です、既定の範囲パーティショナー経由で速度が向上する可能性があります。 +次の例は、静的なパーティション分割を行う PLINQ 用の単純なカスタム パーティショナーを実装する方法を示しています。 パーティショナーは動的なパーティションをサポートしていないため、 からは利用することはできません。 この特定のパーティショナーは、各要素が大量の処理時間を必要とするデータ ソースで、既定の範囲のパーティショナーよりも処理速度を向上させることができる場合があります。 ## 例 [!code-csharp[TPL_Partitioners#05](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_partitioners/cs/partitioners.cs#05)] - この例では、パーティションは処理時間の各要素を直線的に増加するという前提に基づいています。 この方法で処理時間を予測するが困難な現実世界があります。 静的パーティショナーで特定のデータ ソースを使用している場合、ソースの数式でパーティション分割を最適化、負荷分散のロジックを追加したり、使用に示すようにパーティション分割手法チャンク[する方法: 動的パーティションを実装します。](../../../docs/standard/parallel-programming/how-to-implement-dynamic-partitions.md). + この例のパーティションでは、各要素の処理時間が直線的に増加することが前提となっています。 実際には、この方法で処理時間を予測するのは難しい場合があります。 特定のデータ ソースで静的パーティショナーを使用している場合、ソースのパーティション分割の数式を最適化したり、負荷分散のロジックを追加したり、「[方法: 動的パーティションを実装する](../../../docs/standard/parallel-programming/how-to-implement-dynamic-partitions.md)」に示すチャンク パーティション分割の手法を使用することができます。 -## 関連項目 +## 参照 [PLINQ および TPL 用のカスタム パーティショナー](../../../docs/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl.md) diff --git a/docs/standard/parallel-programming/how-to-implement-a-producer-consumer-dataflow-pattern.md b/docs/standard/parallel-programming/how-to-implement-a-producer-consumer-dataflow-pattern.md index 99394beb2ea..e1f6daebb06 100644 --- a/docs/standard/parallel-programming/how-to-implement-a-producer-consumer-dataflow-pattern.md +++ b/docs/standard/parallel-programming/how-to-implement-a-producer-consumer-dataflow-pattern.md @@ -1,12 +1,8 @@ --- title: "方法: プロデューサー/コンシューマーのデータフロー パターンを実装する" -ms.custom: ms.date: 03/30/2017 ms.prod: .net -ms.reviewer: -ms.suite: ms.technology: dotnet-standard -ms.tgt_pltfrm: ms.topic: article dev_langs: - csharp @@ -16,26 +12,27 @@ helpviewer_keywords: - Task Parallel Library, dataflows - producer-consumer patterns, implementing [TPL] ms.assetid: 47a1d38c-fe9c-44aa-bd15-937bd5659b0b -caps.latest.revision: "10" author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: e1aba08e8364d8a21f70ab480d58041115a4849e -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3758ec77a722a66c6faa287d299e5e9c38858be5 +ms.sourcegitcommit: 6a9030eb5bd0f00e1d144f81958adb195cfb1f6f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/10/2018 --- # 方法: プロデューサー/コンシューマーのデータフロー パターンを実装する このドキュメントでは、TPL データフロー ライブラリを使用して、プロデューサー/コンシューマー パターンを実装する方法について説明します。 このパターンでは、"*プロデューサー*" がメッセージをメッセージ ブロックに送信し、"*コンシューマー*" がそのブロックからメッセージを読み取ります。 - -> [!TIP] -> TPL データ フローのライブラリ ( 名前空間) は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と一緒に配布されません。 インストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**プロジェクト メニューのおよびオンラインで検索から、`Microsoft.Tpl.Dataflow`パッケージ。 + +[!INCLUDE [tpl-install-instructions](../../../includes/tpl-install-instructions.md)] ## 例 - 次の例では、データフローを使用する基本的なプロデューサー/コンシューマー モデルを示します。 `Produce`メソッドは、データのランダム バイトを含む配列を書き込みます、オブジェクトおよび`Consume`メソッドがからバイトを読み取り、オブジェクト。 操作を実行して、その派生型ではなく、インターフェイスのさまざまなデータ フロー ブロックの型で動作できる再利用可能なコードを記述できます。 この例では、クラスです。 クラスは、両方のソースとして機能をブロックし、ターゲット ブロック、プロデューサーおよびコンシューマーを使用して、共有されたオブジェクト データを転送します。 + 次の例では、データフローを使用する基本的なプロデューサー/コンシューマー モデルを示します。 `Produce` メソッドは、データのランダム バイトを含む配列を オブジェクトに書き込み、`Consume` メソッドは オブジェクトからバイトを読み取ります。 派生型ではなく、 のインターフェイス上で動作することで、さまざまなデータフロー ブロック型上で動作する再利用可能なコードを記述できます。 この例では、 クラスを使用します。 クラスはソース ブロックとターゲット ブロックの両方として機能するため、プロデューサーおよびコンシューマーは共有されたオブジェクトを使用してデータを転送できます。 - `Produce`メソッドの呼び出し、ターゲット ブロックにデータを同期的に記述するループ内のメソッドです。 後に、`Produce`メソッドは呼び出しのターゲット ブロックにすべてのデータを書き込みます、を示す、ブロックが使用可能なその他のデータを持つことはありません。 `Consume`メソッドを使用、 [async](~/docs/csharp/language-reference/keywords/async.md)と[await](~/docs/csharp/language-reference/keywords/await.md)演算子 ([Async](~/docs/visual-basic/language-reference/modifiers/async.md)と[Await](~/docs/visual-basic/language-reference/operators/await-operator.md)で[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)]) に非同期的にから受信されるバイトの合計数を計算、オブジェクト。 非同期的に動作する、`Consume`メソッドの呼び出し、メソッド、ソース ブロックがあり、使用可能なデータと、ソース ブロックには使用可能なその他のデータはないときに通知を受信します。 + `Produce` メソッドはループ内で メソッドを呼び出し、ターゲット ブロックにデータを同期的に書き込みます。 `Produce` メソッドはターゲット ブロックにすべてのデータを書き込んだ後、 メソッドを呼び出して、このブロックに使用可能なデータが追加されないように指示します。 `Consume` メソッドでは、[async](~/docs/csharp/language-reference/keywords/async.md) 演算子と [await](~/docs/csharp/language-reference/keywords/await.md) 演算子 ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では [Async](~/docs/visual-basic/language-reference/modifiers/async.md) と [Await](~/docs/visual-basic/language-reference/operators/await-operator.md)) を使用して、 オブジェクトから受信した合計バイト数を非同期的に計算します。 非同期的に動作するために、`Consume` メソッドは メソッドを呼び出して、ソース ブロックに使用可能なデータがあるときとソース ブロックに使用可能なデータが追加されなくなったときに、通知を受信します。 [!code-csharp[TPLDataflow_ProducerConsumer#1](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_producerconsumer/cs/dataflowproducerconsumer.cs#1)] [!code-vb[TPLDataflow_ProducerConsumer#1](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_producerconsumer/vb/dataflowproducerconsumer.vb#1)] @@ -52,12 +49,12 @@ ms.lasthandoff: 10/18/2017 **vbc.exe /r:System.Threading.Tasks.Dataflow.dll DataflowProducerConsumer.vb** ## 信頼性の高いプログラミング - この例では、1 つのコンシューマーのみを使用してソース データを処理します。 アプリケーションで複数のコンシューマーがあればを使用して、メソッドを次の例で示すように、ソース ブロックからデータを読み取ります。 + この例では、1 つのコンシューマーのみを使用してソース データを処理します。 アプリケーションに複数のコンシューマーがある場合は、次の例に示すように、 メソッドを使用してソース ブロックからデータを読み取ります。 [!code-csharp[TPLDataflow_ProducerConsumer#2](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_producerconsumer/cs/dataflowproducerconsumer.cs#2)] [!code-vb[TPLDataflow_ProducerConsumer#2](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_producerconsumer/vb/dataflowproducerconsumer.vb#2)] - メソッドを返します。`False`データが使用できない場合。 このメカニズムでは、データは、呼び出しの後に引き続き使用できます保証複数のコンシューマーは、ソース ブロックを同時にアクセスする必要がある場合、です。 + メソッドは、データを使用できないときに `False` を返します。 複数のコンシューマーがソース ブロックに同時にアクセスする必要がある場合、この仕組みが、 の呼び出し後もデータを使用可能なことを保証します。 -## 関連項目 +## 参照 [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/how-to-implement-dynamic-partitions.md b/docs/standard/parallel-programming/how-to-implement-dynamic-partitions.md index 5be01f898c8..7a12c7130b5 100644 --- a/docs/standard/parallel-programming/how-to-implement-dynamic-partitions.md +++ b/docs/standard/parallel-programming/how-to-implement-dynamic-partitions.md @@ -11,29 +11,33 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, how to create a dynamic partitioner +helpviewer_keywords: +- tasks, how to create a dynamic partitioner ms.assetid: c875ad12-a161-43e6-ad1c-3d6927c536a7 -caps.latest.revision: "5" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: d1e5dc93997918e0f7da29fa1f94c434a556f19f -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 9b08c387c9b10a9d6fa8728a7fce87a7894a37fa +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 動的パーティションを実装する -次の例は、カスタムを実装する方法を示しています。を動的なパーティション分割を実装し、特定のオーバー ロードから使用できると PLINQ の間です。 +次の例は、特定のオーバーロード と PLINQ から動的なパーティション分割を実装するカスタム を実装する方法を示します。 ## 例 - パーティションを呼び出すたびに列挙子に対して、列挙子は 1 つのリストの要素を持つパーティションを提供します。 PLINQ の場合と、パーティションが、インスタンス。 要求は、複数のスレッドで同時に発生している、ため、現在のインデックスへのアクセスが同期されます。 + 列挙子でパーティションが を呼び出すたびに、列挙子はパーティションに 1 つのリスト要素を提供します。 PLINQ と では、パーティションは インスタンスです。 要求は、複数のスレッドで同時に発生しているため、現在のインデックスへのアクセスは同期されます。 [!code-csharp[TPL_Partitioners#04](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_partitioners/cs/partitioners.cs#04)] [!code-vb[TPL_Partitioners#04](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_partitioners/vb/dynamicpartitioner.vb#04)] - これは、パーティション分割、1 つの要素で構成される各チャンクをチャンクの例です。 を一度に複数の要素を提供するにはロックの競合を減らしでしたして理論的には高速なパフォーマンスを実現します。 ただし、いくつかの時点では、大きな単位必要があります負荷分散のロジックを追加、すべての作業が完了するまでのすべてのスレッドをビジー状態に保つためにします。 + これは、各チャンクが 1 つの要素で構成されるチャンク パーティション分割の例です。 一度に複数の要素を提供することにより、ロックの競合を減らし、理論的により高速なパフォーマンスを実現することができます。 ただし、チャンクが大きい場合、すべての作業が完了するまで、すべてのスレッドをビジーにするために、ある時点で追加の負荷分散ロジックが必要な場合があります。 -## 関連項目 +## 参照 [PLINQ および TPL 用のカスタム パーティショナー](../../../docs/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl.md) [方法: 静的パーティション分割用にパーティショナーを実装する](../../../docs/standard/parallel-programming/how-to-implement-a-partitioner-for-static-partitioning.md) diff --git a/docs/standard/parallel-programming/how-to-iterate-file-directories-with-plinq.md b/docs/standard/parallel-programming/how-to-iterate-file-directories-with-plinq.md index b492f87536d..575841e7842 100644 --- a/docs/standard/parallel-programming/how-to-iterate-file-directories-with-plinq.md +++ b/docs/standard/parallel-programming/how-to-iterate-file-directories-with-plinq.md @@ -8,39 +8,43 @@ ms.suite: ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article -helpviewer_keywords: PLINQ queries, how to iterate directories +helpviewer_keywords: +- PLINQ queries, how to iterate directories ms.assetid: 354e8ce3-35c4-431c-99ca-7661d1f3901b -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 40fd9f64b5702f5205b7817f3de1e0a8709c5a63 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: ddd3b509b7c0c35f1c4edea99cb5a4ec6c1ac18e +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: PLINQ を使用してファイル ディレクトリを反復処理する -この例では、ファイルのディレクトリでの操作を並列化する 2 つの簡単な方法を示します。 最初のクエリを使用して、ディレクトリとすべてのサブディレクトリ内のファイル名の配列に挿入する方法です。 このメソッドは、配列全体を設定すると、され、そのため、操作の開始時の待機時間が生じることになるまでには返されません。 ただし、配列を作成すると、後に PLINQ ことができます、並列処理非常に短時間です。 +この例では、ファイル ディレクトリに対する操作を簡単に並列化する 2 とおりの方法を示します。 最初のクエリでは、 メソッドを使用して、ディレクトリとすべてのサブディレクトリ内のファイル名の配列を作成します。 配列全体の値が設定されるまでこのメソッドから制御が戻らないため、操作の開始時に待機時間が発生する可能性があります。 ただし、配列が作成されたら、PLINQ は配列を迅速に並列処理できます。 - 2 番目のクエリは、静的なすぐに結果を返すを開始するメソッド。 このアプローチは短縮されます大規模なディレクトリ ツリーを繰り返し処理するときと比較する最初の例と処理時間が、さまざまな要因に依存できます。 + 2 番目のクエリでは、即座に結果を返し始める静的な メソッドと メソッドを使用します。 この方法は、最初の例に比べると、処理時間が多くの要素に左右される可能性がありますが、大規模なディレクトリ ツリーを反復処理するときには処理が速くなる場合があります。 > [!WARNING] -> これらの例は、使用法を説明するものでし、可能性がありますいないほど高速で、同等の連続した LINQ to Objects クエリ。 高速化の詳細については、次を参照してください。 [PLINQ で高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)です。 +> これらの例は使用法を示すことを目的としており、同等の LINQ to Objects 順次クエリよりも実行速度が遅い場合があります。 高速化の詳細については、「[PLINQ での高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 ## 例 - 次の例と、ツリー内のすべてのディレクトリへのアクセスがある、ファイルのサイズが非常に大きなアクセス時間が重要ではありませんは、単純なシナリオでのファイル ディレクトリを反復処理する方法を示します。 この方法には、ファイル名の配列が構築されるときに、先頭の待機時間の期間が含まれます。 + 次の例は、単純なシナリオ (ツリー内のすべてのディレクトリにアクセスできる場合、ファイル サイズがそれほど大きくない場合、アクセス時間が重要ではない場合) において、ファイル ディレクトリを反復処理する方法を示しています。 この方法では、ファイル名の配列が作成されている間、最初に待機時間が発生します。 [!code-csharp[PLINQ#33](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqfileiteration.cs#33)] ## 例 - 次の例と、ツリー内のすべてのディレクトリへのアクセスがある、ファイルのサイズが非常に大きなアクセス時間が重要ではありませんは、単純なシナリオでのファイル ディレクトリを反復処理する方法を示します。 この方法は、前の例よりも高速に結果を生成を開始します。 + 次の例は、単純なシナリオ (ツリー内のすべてのディレクトリにアクセスできる場合、ファイル サイズがそれほど大きくない場合、アクセス時間が重要ではない場合) において、ファイル ディレクトリを反復処理する方法を示しています。 この方法では、前の例よりも迅速に結果を生成し始めます。 [!code-csharp[PLINQ#34](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqfileiteration.cs#34)] - 使用する場合ツリー内のすべてのディレクトリに十分なアクセス許可があることを確認します。 それ以外の場合、例外がスローし、結果は返されません。 使用する場合、 PLINQ クエリでは例外を処理する I/O の反復処理を続行することができます、正常な方法で問題が発生します。 かどうかは、コードは、I/O または不正アクセス例外を処理する必要がありますで説明されているアプローチを検討する必要があります[する方法: Parallel クラスの使用してファイル ディレクトリを反復処理する](../../../docs/standard/parallel-programming/how-to-iterate-file-directories-with-the-parallel-class.md)です。 + を使用する場合は、ツリー内のすべてのディレクトリに対して必要なアクセス許可があることを確認してください。 アクセス許可がないと例外がスローされ、結果は返されません。 PLINQ クエリで を使用する場合、反復処理を続行できるように I/O 例外を適切に処理することが問題となります。 コードで I/O 例外または承認されていないアクセスの例外を処理する必要がある場合は、「[方法: Parallel クラスを使用してファイル ディレクトリを反復処理する](../../../docs/standard/parallel-programming/how-to-iterate-file-directories-with-the-parallel-class.md)」で説明する方法を検討することをお勧めします。 - I/O 待機時間が問題の場合は、たとえば、ネットワーク経由でのファイル I/O の使用を検討してで説明されている非同期 I/O の手法のいずれかの[TPL と従来の .NET Framework 非同期プログラミング](../../../docs/standard/parallel-programming/tpl-and-traditional-async-programming.md)とこの[ブログの投稿](http://go.microsoft.com/fwlink/?LinkID=186458). + ネットワーク経由のファイル I/O などで I/O の待機時間が問題となる場合は、「[TPL と従来の .NET 非同期プログラミング](../../../docs/standard/parallel-programming/tpl-and-traditional-async-programming.md)」およびこの[ブログの投稿](http://go.microsoft.com/fwlink/?LinkID=186458)で説明する非同期 I/O の手法のいずれかを使用することを検討してください。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/how-to-iterate-file-directories-with-the-parallel-class.md b/docs/standard/parallel-programming/how-to-iterate-file-directories-with-the-parallel-class.md index 610f3814773..df9b5a19112 100644 --- a/docs/standard/parallel-programming/how-to-iterate-file-directories-with-the-parallel-class.md +++ b/docs/standard/parallel-programming/how-to-iterate-file-directories-with-the-parallel-class.md @@ -11,20 +11,24 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: parallel loops, how to iterate directories +helpviewer_keywords: +- parallel loops, how to iterate directories ms.assetid: 555e9f48-f53d-4774-9bcf-3e965c732ec5 -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: c21aadf70eaccafc8c8ec9c4efefff1c66abc6b5 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3ac1af7922e1bbd81f4dfcee256f5c8892294003 +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/19/2018 --- # 方法: Parallel クラスを使用してファイル ディレクトリを反復処理する -多くの場合、ファイル反復処理は簡単に並列化できる操作です。 トピック[する方法: PLINQ を使用してファイル ディレクトリを反復処理する](../../../docs/standard/parallel-programming/how-to-iterate-file-directories-with-plinq.md)多くのシナリオに対してこのタスクを実行する最も簡単な方法を示します。 ただし、ファイル システムへのアクセス時に発生する可能性のある多くの種類の例外をコードで処理する必要がある場合は、複雑さが生じることがあります。 次の例は、この問題への対処方法の 1 つを示しています。 この例では、スタック ベースの反復処理を使用して、指定されたディレクトリにあるすべてのファイルとフォルダーを走査し、コードで各種例外をキャッチして処理できるようにしています。 例外を処理する方法は開発者に委ねられています。 +多くの場合、ファイル反復処理は簡単に並列化できる操作です。 「[方法: PLINQ を使用してファイル ディレクトリを反復処理する](../../../docs/standard/parallel-programming/how-to-iterate-file-directories-with-plinq.md)」のトピックは、多くのシナリオでこのタスクを実行するための簡単な方法を示しています。 ただし、ファイル システムへのアクセス時に発生する可能性のある多くの種類の例外をコードで処理する必要がある場合は、複雑さが生じることがあります。 次の例は、この問題への対処方法の 1 つを示しています。 この例では、スタック ベースの反復処理を使用して、指定されたディレクトリにあるすべてのファイルとフォルダーを走査し、コードで各種例外をキャッチして処理できるようにしています。 例外を処理する方法は開発者に委ねられています。 ## 例 次の例では、ディレクトリの反復処理は順次実行されますが、ファイルの処理は並列で実行されます。 これは、ディレクトリのファイル占有率が大きい場合に最適な方法と考えられます。 また、ディレクトリの反復処理を並列化し、各ファイルに順次アクセスすることもできます。 多数のプロセッサを搭載したコンピューターを明確に対象としている場合を除き、両方のループを並列化するのは効率的とは言えません。 ただし、どの場合もアプリケーションを徹底的にテストして、最適な方法を決定する必要があります。 @@ -36,7 +40,7 @@ ms.lasthandoff: 10/18/2017 この例では、ローカル変数 `fileCount` を使用して、処理済みファイルの合計数を示すカウントを管理します。 この変数は複数のタスクから同時にアクセスされる可能性があるため、この変数へのアクセスは メソッドの呼び出しによって同期されています。 - メイン スレッドで例外がスローされた場合、 メソッドによって開始されたスレッドが引き続き実行されることがあります。 これらのスレッドを停止するには、例外ハンドラーで Boolean 変数を設定し、並列ループを反復処理するたびに値をチェックします。 例外がスローされたことを値が示している場合は、 変数を使用してループを停止または中断します。 詳細については、次を参照してください。[する方法: Parallel.For ループを停止または中断](http://msdn.microsoft.com/en-us/de52e4f1-9346-4ad5-b582-1a4d54dc7f7e)です。 + メイン スレッドで例外がスローされた場合、 メソッドによって開始されたスレッドが引き続き実行されることがあります。 これらのスレッドを停止するには、例外ハンドラーで Boolean 変数を設定し、並列ループを反復処理するたびに値をチェックします。 例外がスローされたことを値が示している場合は、 変数を使用してループを停止または中断します。 詳細については、「[方法: Parallel.For ループを停止または中断する](http://msdn.microsoft.com/library/de52e4f1-9346-4ad5-b582-1a4d54dc7f7e)」を参照してください。 -## 関連項目 +## 参照 [データの並列化](../../../docs/standard/parallel-programming/data-parallelism-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/how-to-measure-plinq-query-performance.md b/docs/standard/parallel-programming/how-to-measure-plinq-query-performance.md index a3883c63af0..bf88ceec9e9 100644 --- a/docs/standard/parallel-programming/how-to-measure-plinq-query-performance.md +++ b/docs/standard/parallel-programming/how-to-measure-plinq-query-performance.md @@ -11,20 +11,24 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, how to measure performance +helpviewer_keywords: +- PLINQ queries, how to measure performance ms.assetid: 491ba43b-2c10-473d-9aab-e2cb96446711 -caps.latest.revision: "7" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 03432e70454cb6203e55e340111a6cb7efe62dc4 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: fe19fd6ae7730a30a9ccc8a39b99a31981f838fa +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: PLINQ クエリのパフォーマンスを測定する -この例では、 PLINQ クエリを実行にかかる時間を測定するクラス。 +この例では、 クラスを使用して、PLINQ クエリの実行にかかる時間を測定する方法を示します。 ## 例 この例では、空の `foreach` ループ (Visual Basic では `For Each`) を使用して、クエリの実行にかかる時間を計測します。 実際のコードでは、ループには通常、クエリの合計実行時間への加算という追加の処理手順が含まれます。 ループでクエリの実行が開始されるため、ループの直前までストップウォッチが開始されないことに注目してください。 さらにきめ細かい測定値が必要な場合は、`ElapsedMilliseconds` ではなく、`ElapsedTicks` プロパティを使用することができます。 @@ -34,5 +38,5 @@ ms.lasthandoff: 10/18/2017 合計実行時間は、クエリの実装を試すときに便利なメトリックですが、これだけでは全貌が明らかにならない場合もあります。 クエリ スレッド同士およびクエリ スレッドと他の実行中のプロセスとのやり取りをより深くより豊かに視覚化するには、同時実行ビジュアライザーを使用します。 詳細については、「[同時実行ビジュアライザー](/visualstudio/profiling/concurrency-visualizer)」を参照してください。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/how-to-perform-action-when-a-dataflow-block-receives-data.md b/docs/standard/parallel-programming/how-to-perform-action-when-a-dataflow-block-receives-data.md index b5e04ae8148..df5201bf198 100644 --- a/docs/standard/parallel-programming/how-to-perform-action-when-a-dataflow-block-receives-data.md +++ b/docs/standard/parallel-programming/how-to-perform-action-when-a-dataflow-block-receives-data.md @@ -1,12 +1,8 @@ --- title: "方法: データフロー ブロックでデータを受信したときにアクションを実行する" -ms.custom: ms.date: 03/30/2017 ms.prod: .net -ms.reviewer: -ms.suite: ms.technology: dotnet-standard -ms.tgt_pltfrm: ms.topic: article dev_langs: - csharp @@ -15,31 +11,32 @@ helpviewer_keywords: - Task Parallel Library, dataflows - TPL dataflow library, receiving data ms.assetid: fc2585dc-965e-4632-ace7-73dd02684ed3 -caps.latest.revision: "11" author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: d049d20f5e685096a72857cd18a89688633883c3 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4aee0462e641e755830b63d3d708bf51b22cd797 +ms.sourcegitcommit: 6a9030eb5bd0f00e1d144f81958adb195cfb1f6f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/10/2018 --- # 方法: データフロー ブロックでデータを受信したときにアクションを実行する -"*実行データフロー ブロック*" の型は、データを受信したときに、ユーザーが指定したデリゲートを呼び出します。 、およびクラスは、実行データ フロー ブロックの型。 使用することができます、`delegate`キーワード (`Sub`で[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)])、 、または実行データフロー ブロックを処理関数を提供する場合は、ラムダ式。 このドキュメントを使用する方法について説明と実行ブロックで操作を実行するラムダ式。 - -> [!TIP] -> TPL データ フローのライブラリ ( 名前空間) は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と一緒に配布されません。 インストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**プロジェクト メニューのおよびオンラインで検索から、`Microsoft.Tpl.Dataflow`パッケージ。 - +"*実行データフロー ブロック*" の型は、データを受信したときに、ユーザーが指定したデリゲートを呼び出します。 、および クラスは、実行データフロー ブロックの種類です。 実行データフロー ブロックに処理関数を提供するときに、`delegate` キーワード ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `Sub`)、、またはラムダ式を使用することができます。 このドキュメントでは、 とラムダ式を使用して、実行ブロックでアクションを実行する方法について説明します。 + +[!INCLUDE [tpl-install-instructions](../../../includes/tpl-install-instructions.md)] + ## 例 - 次の例では、データフローを使用してディスクからファイルを読み取り、ファイル内のバイト数がゼロに等しい件数を計算します。 使用して、ファイルを読み取り、ゼロのバイト数を計算してをコンソールにゼロのバイト数を印刷します。 オブジェクトを指定します、ブロックのデータの受信時に作業を実行するオブジェクト。 オブジェクトでは、ラムダ式を使用して、読み取られるゼロのバイト数をコンソールに出力します。 + 次の例では、データフローを使用してディスクからファイルを読み取り、ファイル内のバイト数がゼロに等しい件数を計算します。 を使用してファイルを読み取り、ゼロ バイトの数を計算し、 を使用してゼロ バイト数をコンソールに出力します。 オブジェクトは、ブロックがデータを受け取ったときに処理を実行する オブジェクトを指定します。 オブジェクトは、ラムダ式を使用して、読み取ったゼロ バイトの件数をコンソールに出力します。 [!code-csharp[TPLDataflow_ExecutionBlocks#1](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_executionblocks/cs/dataflowexecutionblocks.cs#1)] [!code-vb[TPLDataflow_ExecutionBlocks#1](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_executionblocks/vb/dataflowexecutionblocks.vb#1)] - ラムダ式を指定できますが、オブジェクト、この例ではを使用するには、その他のコードを有効にする、`CountBytes`メソッドです。 がであるため実行される作業は、このタスクを特定すると思われるその他のコードからに、オブジェクトは、ラムダ式を使用します。 タスク並列ライブラリでのラムダ式の動作の詳細については、「[PLINQ および TPL のラムダ式](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md)」を参照してください。 + オブジェクトにラムダ式を使用することはできますが、この例では を使用して他のコードで `CountBytes` メソッドを使用できるようにしています。 実行される処理がこのタスク固有であり、他のコードでは役立ちそうにないため、 オブジェクトではラムダ式を使用しています。 タスク並列ライブラリでのラムダ式の動作の詳細については、「[PLINQ および TPL のラムダ式](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md)」を参照してください。 - デリゲート型の概要 セクションで、[データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md)ドキュメントを提供できるデリゲート型の概要を示します、およびオブジェクト。 表では、デリゲート型が同期的または非同期的に動作するかどうかについても示しています。 + [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md)に関するドキュメントの「デリゲート型の概要」セクションには、 オブジェクトに提供できるデリゲート型がまとめられています。 表では、デリゲート型が同期的または非同期的に動作するかどうかについても示しています。 ## コードのコンパイル コード例をコピーし、Visual Studio プロジェクトに貼り付けるか、`DataflowExecutionBlocks.cs` ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `DataflowExecutionBlocks.vb`) という名前のファイルに貼り付けてから、Visual Studio のコマンド プロンプト ウィンドウで次のコマンドを実行します。 @@ -53,15 +50,15 @@ ms.lasthandoff: 10/18/2017 **vbc.exe /r:System.Threading.Tasks.Dataflow.dll DataflowExecutionBlocks.vb** ## 信頼性の高いプログラミング - この例では、型のデリゲートデータ フロー ブロックのタスクを同期的に実行するオブジェクト。 非同期的に動作するデータフロー ブロックを有効にするには、型のデリゲートを指定データ フロー ブロックにします。 データ フロー ブロックは非同期に動作する、データ フロー ブロックのタスクは完了の場合にのみ、返されたオブジェクトが完了するとします。 次の例では、`CountBytes` メソッドを変更して、[async](~/docs/csharp/language-reference/keywords/async.md) 演算子と [await](~/docs/csharp/language-reference/keywords/await.md) 演算子 ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では [Async](~/docs/visual-basic/language-reference/modifiers/async.md) と [Await](~/docs/visual-basic/language-reference/operators/await-operator.md)) を使用して、提供されたファイル内のゼロ バイトの件数の合計を非同期的に計算します。 メソッドは非同期的にファイル読み取り操作を実行します。 + この例では、データフロー ブロックのタスクを同期的に実行するために、 オブジェクトに 型のデリゲートを提供しています。 データフロー ブロックが非同期的に動作できるようにするには、型 のデリゲートをデータフロー ブロックに提供します。 データフロー ブロックが非同期的に動作している場合、返された オブジェクトが完了したときのみ、データフロー ブロックのタスクが完了します。 次の例では、`CountBytes` メソッドを変更して、[async](~/docs/csharp/language-reference/keywords/async.md) 演算子と [await](~/docs/csharp/language-reference/keywords/await.md) 演算子 ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では [Async](~/docs/visual-basic/language-reference/modifiers/async.md) と [Await](~/docs/visual-basic/language-reference/operators/await-operator.md)) を使用して、提供されたファイル内のゼロ バイトの件数の合計を非同期的に計算します。 メソッドは、ファイルの読み取り操作を非同期的に実行します。 [!code-csharp[TPLDataflow_ExecutionBlocks#2](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_executionblocks/cs/dataflowexecutionblocks.cs#2)] [!code-vb[TPLDataflow_ExecutionBlocks#2](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_executionblocks/vb/dataflowexecutionblocks.vb#2)] - 実行データフロー ブロックでアクションを実行するために、非同期ラムダ式を使用することもできます。 次の例を変更、作業を非同期的に実行する、ラムダ式を使用するように、前の例で使用されるオブジェクト。 + 実行データフロー ブロックでアクションを実行するために、非同期ラムダ式を使用することもできます。 次の例では、前の例で使用される オブジェクトを変更して、ラムダ式を使用して処理を非同期的に実行できるようにしています。 [!code-csharp[TPLDataflow_ExecutionBlocks#3](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_executionblocks/cs/dataflowexecutionblocks.cs#3)] [!code-vb[TPLDataflow_ExecutionBlocks#3](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_executionblocks/vb/dataflowexecutionblocks.vb#3)] -## 関連項目 +## 参照 [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/how-to-prevent-a-child-task-from-attaching-to-its-parent.md b/docs/standard/parallel-programming/how-to-prevent-a-child-task-from-attaching-to-its-parent.md index 7ef0406445f..a9c7a300ddd 100644 --- a/docs/standard/parallel-programming/how-to-prevent-a-child-task-from-attaching-to-its-parent.md +++ b/docs/standard/parallel-programming/how-to-prevent-a-child-task-from-attaching-to-its-parent.md @@ -11,28 +11,32 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, preventing attachments +helpviewer_keywords: +- tasks, preventing attachments ms.assetid: c0fb85d4-9e80-4905-9f65-29acc54201c4 -caps.latest.revision: "5" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 4717e3a077648d9db51fe39228209617b384bd0c -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2cab2fb9c26a8ddaa868cafebac718e5dfd6baa0 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 子タスクがその親にアタッチしないようにする -このドキュメントでは、子タスクが親タスクにアタッチされないようにする方法を示します。 サード パーティによって書き込まれ、タスクにも使用するコンポーネントを呼び出す場合は、子タスクがその親にアタッチされないようにすると便利です。 たとえばを使用してサード パーティ コンポーネント、を作成するオプション、またはオブジェクトで問題が発生、コードは、実行時間の長いまたは未処理の例外がスローされます。 +このドキュメントでは、子タスクが親タスクにアタッチしないようにする方法を紹介します。 サード パーティによって書き込まれ、タスクも使用するコンポーネントを呼び出す場合は、子タスクがその親にアタッチしないようにすると便利です。 たとえば、 オプションを使用して または オブジェクトを作成するサード パーティ コンポーネントが長時間実行されているか、ハンドルされない例外をスローする場合、コードで問題が発生する可能性があります。 ## 例 - 次の例では、効果が親にアタッチされた子タスクを回避するという既定のオプションを使用する効果を比較します。 例は、作成、もを使用するサード パーティ製ライブラリを呼び出すオブジェクト、オブジェクト。 サード パーティ製ライブラリを使用して、を作成するオプション、オブジェクト。 アプリケーションを使用して、親タスクを作成するオプションです。 このオプションを削除するようランタイムに指示、子タスクで指定します。 + 次の例では、子タスクが親にアタッチしないようにする効果と、既定のオプションを使用する効果を比較します。 この例では、 オブジェクトも使用する、サード パーティ ライブラリを呼び出す、 オブジェクトを作成します。 サード パーティ ライブラリでは オプションを使用して、 オブジェクトを作成します。 アプリケーションでは オプションを使用して、親タスクを作成します。 このオプションは、子タスクの 指定を削除するようにランタイムに指示します。 [!code-csharp[TPL_DenyChildAttach#1](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_denychildattach/cs/denychildattach.cs#1)] [!code-vb[TPL_DenyChildAttach#1](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_denychildattach/vb/denychildattach.vb#1)] - すべての子タスクが終了するまで、親タスクが完了していないため、実行時間の長い子タスクによって生じるパフォーマンスを発揮する全体的なアプリケーションです。 この例ではアプリケーションでは、既定のオプションを使用して、親タスクを作成するときは、子タスク、親タスクが完了する前に完了する必要があります。 アプリケーションを使用する場合、オプション、子が親にアタッチされていません。 そのため、アプリケーションは、親タスクが終了して、子タスクを完了を待機する前に、追加の作業を実行できます。 + 親タスクはすべての子タスクが終了するまで終了しないため、長時間実行される子タスクによって、アプリケーション全体のパフォーマンスが低下する場合があります。 この例では、アプリケーションが既定のオプションを使用して親タスクを作成する場合に、親タスクが終了する前に子タスクが終了する必要があります。 アプリケーションで オプションを使用する場合、子は親にアタッチされません。 そのため、アプリケーションは、親タスクの終了後、子タスクが終了するのを待機する前に、追加の作業を実行できます。 ## コードのコンパイル コード例をコピーし、Visual Studio プロジェクトに貼り付けるか、`DenyChildAttach.cs` ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `DenyChildAttach.vb`) という名前のファイルに貼り付けてから、Visual Studio のコマンド プロンプト ウィンドウで次のコマンドを実行します。 @@ -47,5 +51,5 @@ ms.lasthandoff: 10/18/2017 ## 信頼性の高いプログラミング -## 関連項目 +## 参照 [タスク ベースの非同期プログラミング](../../../docs/standard/parallel-programming/task-based-asynchronous-programming.md) diff --git a/docs/standard/parallel-programming/how-to-return-a-value-from-a-task.md b/docs/standard/parallel-programming/how-to-return-a-value-from-a-task.md index fc5686f5d76..73e79722c24 100644 --- a/docs/standard/parallel-programming/how-to-return-a-value-from-a-task.md +++ b/docs/standard/parallel-programming/how-to-return-a-value-from-a-task.md @@ -11,17 +11,21 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, how to return a value +helpviewer_keywords: +- tasks, how to return a value ms.assetid: c4bc0f44-eba2-4e96-9e03-1cc787461e61 -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: ade2aadc7d76c12c633f84eeb9eced7a637d5df9 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4497f7f9c6802a9b3d4edca66ceb4a894a59646a +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: タスクから値を返す この例では、 の型を使用して プロパティから値を返す方法を示します。 C:\Users\Public\Pictures\Sample Pictures\ ディレクトリが存在している必要があり、それがファイルを含んでいる必要があります。 @@ -32,8 +36,8 @@ ms.lasthandoff: 11/21/2017 プロパティは、タスクが終了するまで呼び出し元のスレッドをブロックします。 - 1 つの結果を渡す方法を表示する継続タスクを参照してください。[を使用して継続タスクをタスクの連結](../../../docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md)です。 + 1 つの の結果を継続タスクに渡す方法を確認するには、「[継続タスクを使用したタスクの連結](../../../docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md)」を参照してください。 -## 関連項目 +## 参照 [タスク ベースの非同期プログラミング](../../../docs/standard/parallel-programming/task-based-asynchronous-programming.md) [PLINQ および TPL のラムダ式](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md) diff --git a/docs/standard/parallel-programming/how-to-specify-a-task-scheduler-in-a-dataflow-block.md b/docs/standard/parallel-programming/how-to-specify-a-task-scheduler-in-a-dataflow-block.md index b7b8fc3571b..3df6bd4ee22 100644 --- a/docs/standard/parallel-programming/how-to-specify-a-task-scheduler-in-a-dataflow-block.md +++ b/docs/standard/parallel-programming/how-to-specify-a-task-scheduler-in-a-dataflow-block.md @@ -1,12 +1,8 @@ --- title: "方法: データフロー ブロックのタスク スケジューラを指定する" -ms.custom: ms.date: 03/30/2017 ms.prod: .net -ms.reviewer: -ms.suite: ms.technology: dotnet-standard -ms.tgt_pltfrm: ms.topic: article dev_langs: - csharp @@ -16,34 +12,35 @@ helpviewer_keywords: - Task Parallel Library, dataflows - task scheduler, linking from TPL ms.assetid: 27ece374-ed5b-49ef-9cec-b20db34a65e8 -caps.latest.revision: "7" author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 20faebc8bda3b50c4f762615d84b7a449ae61c6f -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 592b6c5c92a2c752fa0d2694cdb477423b15eb0d +ms.sourcegitcommit: 6a9030eb5bd0f00e1d144f81958adb195cfb1f6f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/10/2018 --- # 方法: データフロー ブロックのタスク スケジューラを指定する -このドキュメントでは、アプリケーションでデータ フローを使用する場合に特定のタスク スケジューラを関連付ける方法を示します。 この例では、Windows フォーム アプリケーションの クラスを使用して、リーダー タスクがアクティブである場合と、ライター タスクがアクティブである場合を示します。 また、 メソッドを使用してデータ フロー ブロックを有効にし、ユーザー インターフェイス スレッドで実行できるようにします。 +このドキュメントでは、アプリケーションでデータ フローを使用する場合に特定のタスク スケジューラを関連付ける方法を示します。 この例では、Windows フォーム アプリケーションの クラスを使用して、リーダー タスクがアクティブである場合と、ライター タスクがアクティブである場合を示します。 また、 メソッドを使用してデータ フロー ブロックを有効にし、ユーザー インターフェイス スレッドで実行できるようにします。 + +[!INCLUDE [tpl-install-instructions](../../../includes/tpl-install-instructions.md)] + +## Windows フォーム アプリケーションを作成するには -> [!TIP] -> TPL データ フローのライブラリ ( 名前空間) は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と一緒に配布されません。 インストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**プロジェクト メニューのおよびオンラインで検索から、`Microsoft.Tpl.Dataflow`パッケージ。 +1. [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] または Visual Basic **Windows フォーム アプリケーション** プロジェクトを作成します。 以降の手順では、プロジェクトの名前は `WriterReadersWinForms` とします。 -### Windows フォーム アプリケーションを作成するには - -1. 作成、[!INCLUDE[csprcs](../../../includes/csprcs-md.md)]または Visual Basic **Windows フォーム アプリケーション**プロジェクト。 以降の手順では、プロジェクトの名前は `WriterReadersWinForms` とします。 - -2. メイン フォーム Form1.cs ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] の Form1.vb) のフォーム デザイナーで、4 つの コントロールを追加します。 設定、プロパティを**リーダー 1**の`checkBox1`、**リーダー 2**の`checkBox2`、**リーダー 3**の`checkBox3`、および**ライター**の`checkBox4`します。 コントロールごとに、 プロパティを `False` に設定します。 +2. メイン フォーム Form1.cs ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] の Form1.vb) のフォーム デザイナーで、4 つの コントロールを追加します。 プロパティを、`checkBox1` に対しては「**リーダー 1**」に、`checkBox2` に対しては「**リーダー 2**」に、`checkBox3` に対しては「**リーダー 3**」に、そして `checkBox4` に対しては「**ライター**」に設定します。 コントロールごとに、 プロパティを `False` に設定します。 3. フォームに コントロールを追加します。 プロパティを `2500` に設定します。 ## データ フロー機能の追加 このセクションでは、アプリケーションに参加するデータ フロー ブロックを作成する方法と、各データ フロー ブロックをタスク スケジューラとを関連付ける方法について説明します。 -#### アプリケーションにデータ フロー機能を追加するには +### アプリケーションにデータ フロー機能を追加するには 1. プロジェクトで、System.Threading.Tasks.Dataflow.dll への参照を追加します。 @@ -89,5 +86,5 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPLDataflow_WriterReadersWinForms#100](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_writerreaderswinforms/cs/writerreaderswinforms/form1.cs#100)] [!code-vb[TPLDataflow_WriterReadersWinForms#100](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_writerreaderswinforms/vb/writerreaderswinforms/form1.vb#100)] -## 関連項目 +## 参照 [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/how-to-specify-merge-options-in-plinq.md b/docs/standard/parallel-programming/how-to-specify-merge-options-in-plinq.md index 3331bbe868e..1a7d7b51113 100644 --- a/docs/standard/parallel-programming/how-to-specify-merge-options-in-plinq.md +++ b/docs/standard/parallel-programming/how-to-specify-merge-options-in-plinq.md @@ -11,32 +11,36 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, how to use merge options +helpviewer_keywords: +- PLINQ queries, how to use merge options ms.assetid: 0f33b527-e91a-4550-a39a-e63e396fd831 -caps.latest.revision: "11" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: ec601e8bbefd31650fb91c438b032942cfc93101 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 59ffff3019f10874bd2df977b80d46e903d13613 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: PLINQ のマージ オプションを指定する -この例では、PLINQ クエリのすべての後続演算子を適用するマージ オプションを指定する方法を示します。 マージ オプションを明示的に設定する必要はありませんが、パフォーマンスが向上する可能性があります。 マージ オプションの詳細については、次を参照してください。 [PLINQ のマージ オプション](../../../docs/standard/parallel-programming/merge-options-in-plinq.md)です。 +この例では、PLINQ クエリの後続のすべての演算子に適用されるマージ オプションを指定する方法を示します。 マージ オプションを明示的に設定する必要はありませんが、設定することでパフォーマンスが向上する可能性があります。 マージ オプションの詳細については、「[PLINQ のマージ オプション](../../../docs/standard/parallel-programming/merge-options-in-plinq.md)」を参照してください。 > [!WARNING] -> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、次を参照してください。 [PLINQ で高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)です。 +> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、「[PLINQ での高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 ## 例 - 次の例では、順序なしのソースがあり、すべての要素に高価な関数を適用する基本的なシナリオでのマージ オプションの動作を示します。 + 次の例では、順序付けされていないソースがあり、すべての要素に負荷が大きい関数を適用する基本的なシナリオでのマージ オプションの動作を示します。 [!code-csharp[PLINQ#23](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#23)] [!code-vb[PLINQ#23](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinq2_vb.vb#23)] - 場合で、オプションが前に、最初の要素が生成されるときに望ましくない待機時間を生じます、再試行してください、迅速かつよりスムーズに結果の要素を生成するにはオプションです。 + 最初の要素が生成される前に オプションで望ましくない待機時間が発生した場合は、結果要素をより速く、よりスムーズに生成するために オプションを試してください。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/how-to-specify-the-execution-mode-in-plinq.md b/docs/standard/parallel-programming/how-to-specify-the-execution-mode-in-plinq.md index ccd0dce9f44..b022537e7c4 100644 --- a/docs/standard/parallel-programming/how-to-specify-the-execution-mode-in-plinq.md +++ b/docs/standard/parallel-programming/how-to-specify-the-execution-mode-in-plinq.md @@ -11,33 +11,37 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, how to use execution mode +helpviewer_keywords: +- PLINQ queries, how to use execution mode ms.assetid: e52ff26c-c5d3-4fab-9fec-c937fb387963 -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 745ceae9832582c7b66a56075d128f9cf1c8ff69 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c1c815131a1553001cdcf20e3c7408e472299677 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: PLINQ の実行モードを指定する -この例では、PLINQ を既定のヒューリスティックをバイパスし、クエリの図形に関係なくクエリを並列化を強制する方法を示します。 +この例では、PLINQ に既定のヒューリスティックをバイパスさせ、クエリのシェイプに関係なくクエリを並列化する方法を示します。 > [!WARNING] -> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、次を参照してください。 [PLINQ で高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)です。 +> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、「[PLINQ での高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 ## 例 [!code-csharp[PLINQ#22](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#22)] [!code-vb[PLINQ#22](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinqsnippets1.vb#22)] - PLINQ が並列化の機会を利用するよう設計されています。 ただし、すべてのクエリは並列実行を享受できます。 たとえば、クエリには、ほとんどの処理を行う単一のユーザー デリゲートが含まれている、クエリは、通常実行順番に高速化します。 これは、並列実行を有効にするのにはオーバーヘッドが取得される速度よりも高価であるためです。 したがって、PLINQ は自動的には並列化しないすべてのクエリ。 まず、クエリおよび構成するさまざまな演算子の図形を調べます。 この分析に基づき、既定の実行モードで PLINQ があります、クエリの一部またはすべてを順番に実行します。 ただし、場合によってはするがわかっている場合より、クエリに関する PLINQ は、分析から判断するよりもします。 たとえば、デリゲートが非常に不経済とするクエリは並列化を確実に利用がわかっている場合があります。 このような場合に使用することができます、メソッドを指定し、常に並列としてクエリを実行するために PLINQ に指示する値。 + PLINQ は、並列化を利用しやすくするために設計されています。 ただし、すべてのクエリが並列実行の利点を活用できるわけではありません。 たとえば、負荷が非常に小さい単一のユーザー デリゲートを含むクエリの場合、順次実行の方が速度が速くなります。 これは、実行を並列するために必要なオーバーヘッドが、並列化で高速にする場合の負荷より大きいためです。 このため、PLINQ はすべてのクエリを自動的に並列化するわけではありません。 最初に、クエリのシェイプとクエリを構成しているさまざまな演算子を調べます。 この分析に基づいて、既定の実行モードの PLINQ によって、クエリの一部またはすべてを順次実行するかどうかが決定されます。 ただし、PLINQ が分析から判断するよりも、ユーザーの方がクエリをより詳しく理解している場合があります。 たとえば、デリゲートの負荷が非常に大きいため、クエリで並列化を使用する方がよいとわかっているとします。 このような場合は、 メソッドを使用し、 値を指定することで、クエリを常に並列実行するよう PLINQ に指示できます。 ## コードのコンパイル - 切り取って貼り付けるには、このコード、 [PLINQ データのサンプル](../../../docs/standard/parallel-programming/plinq-data-sample.md)からメソッドを呼び出すと`Main`です。 + このコードをコピーして [PLINQ Data Sample](../../../docs/standard/parallel-programming/plinq-data-sample.md) に貼り付けて、`Main` からメソッドを呼び出します。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/how-to-speed-up-small-loop-bodies.md b/docs/standard/parallel-programming/how-to-speed-up-small-loop-bodies.md index 933c6ed197c..f13fa0baad8 100644 --- a/docs/standard/parallel-programming/how-to-speed-up-small-loop-bodies.md +++ b/docs/standard/parallel-programming/how-to-speed-up-small-loop-bodies.md @@ -11,20 +11,24 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: parallel loops, how to speed up +helpviewer_keywords: +- parallel loops, how to speed up ms.assetid: c7a66677-cb59-4cbf-969a-d2e8fc61a6ce -caps.latest.revision: "18" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: d38d8beedf342720d4dc68026297edb457f5ed35 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: fb1c39d3eb2c0b68182f49d8aa5dcc4e652f9215 +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/19/2018 --- # 方法: 小さいループ本体を高速化する -ときに、ループ小さな本文が含まれるため、可能性があります実行と同等の連続したループよりも時間がかかるなど、[の](~/docs/csharp/language-reference/keywords/for.md)(C#) ループと[の](http://msdn.microsoft.com/en-us/c470a263-9b49-4308-8fd6-8592b84a7980)Visual Basic でループします。 パフォーマンスの低下は、データのパーティション分割と、各ループのイテレーションでデリゲートを呼び出す負荷によって発生します。 このようなシナリオに対処するため、 クラスには メソッドが用意されています。このメソッドにより、デリゲートがイテレーションごとに 1 回ではなく、パーティションごとに 1 回だけ呼び出されるように、デリゲートの本体に順次ループを提供できるようになります。 詳細については、「[Custom Partitioners for PLINQ and TPL (PLINQ および TPL 用のカスタム パーティショナー)](../../../docs/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl.md)」を参照してください。 + ループの本体が小さい場合、[for](~/docs/csharp/language-reference/keywords/for.md) ループ (C#)、[For](http://msdn.microsoft.com/library/c470a263-9b49-4308-8fd6-8592b84a7980) ループ (Visual Basic) など、同等の連続したループよりパフォーマンスが低下する可能性があります。 パフォーマンスの低下は、データのパーティション分割と、各ループのイテレーションでデリゲートを呼び出す負荷によって発生します。 このようなシナリオに対処するため、 クラスには メソッドが用意されています。このメソッドにより、デリゲートがイテレーションごとに 1 回ではなく、パーティションごとに 1 回だけ呼び出されるように、デリゲートの本体に順次ループを提供できるようになります。 詳細については、「[Custom Partitioners for PLINQ and TPL (PLINQ および TPL 用のカスタム パーティショナー)](../../../docs/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl.md)」を参照してください。 ## 例 [!code-csharp[TPL_Partitioners#01](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_partitioners/cs/partitioner01.cs#01)] @@ -32,7 +36,7 @@ ms.lasthandoff: 11/21/2017 この例で示す方法は、ループが最小限の作業を実行するときに便利です。 作業がより負荷の大きい処理になるにつれ、既定のパーティショナーで ループまたは ループを使用すると、同じまたはそれ以上のパフォーマンスが得られることがあります。 -## 関連項目 +## 参照 [データの並列化](../../../docs/standard/parallel-programming/data-parallelism-task-parallel-library.md) [PLINQ および TPL 用のカスタム パーティショナー](../../../docs/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl.md) [反復子](http://msdn.microsoft.com/library/f45331db-d595-46ec-9142-551d3d1eb1a7) diff --git a/docs/standard/parallel-programming/how-to-traverse-a-binary-tree-with-parallel-tasks.md b/docs/standard/parallel-programming/how-to-traverse-a-binary-tree-with-parallel-tasks.md index 0866b4f0aca..b2ed18ffc33 100644 --- a/docs/standard/parallel-programming/how-to-traverse-a-binary-tree-with-parallel-tasks.md +++ b/docs/standard/parallel-programming/how-to-traverse-a-binary-tree-with-parallel-tasks.md @@ -11,26 +11,30 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, how to traverse a tree +helpviewer_keywords: +- tasks, how to traverse a tree ms.assetid: 4265d169-6c69-4f36-b10d-b7ae7f72f4df -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 4c029a763faaa0b4d6ea5612efe079e47415b6fa -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 0196d82dd46a105f7cf1db0f9333a5d28afe559b +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 並列タスクでバイナリ ツリーを走査する -次の例では、ツリー データ構造を走査する並列タスクを使用する 2 つの方法を示します。 ツリー自体の作成は、演習をおきます。 +次の例では、ツリー データ構造を走査する並列タスクを使用する 2 つの方法を示します。 ツリー自体の作成は、演習として残しておきます。 ## 例 [!code-csharp[TPL#16](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl/cs/tpl.cs#16)] [!code-vb[TPL#16](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl/vb/treewalk.vb#16)] - 2 つのメソッドは、機能的に等価です。 使用して、メソッドを作成して、タスクを実行するハンドルを送り返させたり、タスク、タスクを待つし、例外を処理するために使用できます。 + 示した 2 つのメソッドは、機能的に同等です。 タスクを作成して実行するために、 メソッドを使用すると、タスクで待機し、例外を処理するために使用するタスクからハンドルを戻すことができます。 -## 関連項目 +## 参照 [タスク並列ライブラリ (TPL)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md) diff --git a/docs/standard/parallel-programming/how-to-unlink-dataflow-blocks.md b/docs/standard/parallel-programming/how-to-unlink-dataflow-blocks.md index 98bd215bb85..b2015ccb6a5 100644 --- a/docs/standard/parallel-programming/how-to-unlink-dataflow-blocks.md +++ b/docs/standard/parallel-programming/how-to-unlink-dataflow-blocks.md @@ -1,12 +1,8 @@ --- title: "方法: データフロー ブロックのリンクを解除する" -ms.custom: ms.date: 03/30/2017 ms.prod: .net -ms.reviewer: -ms.suite: ms.technology: dotnet-standard -ms.tgt_pltfrm: ms.topic: article dev_langs: - csharp @@ -16,44 +12,43 @@ helpviewer_keywords: - Task Parallel Library, dataflows - TPL dataflow library, unlinking dataflow blocks ms.assetid: 40f0208d-4618-47f7-85cf-4913d07d2d7d -caps.latest.revision: "11" author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 41f1b83fab6ff44e69ac2f010f70e6e254341f5e -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: db3c0d3a6d94e2e9eb65046267f14feff0c056cb +ms.sourcegitcommit: 6a9030eb5bd0f00e1d144f81958adb195cfb1f6f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/10/2018 --- # 方法: データフロー ブロックのリンクを解除する -このドキュメントでは、ターゲット データ フロー ブロックをソースからのリンクを解除する方法について説明します。 - -> [!TIP] -> TPL データ フローのライブラリ ( 名前空間) は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と一緒に配布されません。 インストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**プロジェクト メニューのおよびオンラインで検索から、`Microsoft.Tpl.Dataflow`パッケージ。 - +このドキュメントでは、ソースからターゲット データフロー ブロックのリンクを解除する方法について説明します。 + +[!INCLUDE [tpl-install-instructions](../../../includes/tpl-install-instructions.md)] + ## 例 - 次の例では、3 つが作成されます呼び出しの各オブジェクト、`TrySolution`値を計算するメソッド。 この例は、最初の呼び出しからの結果だけを必要と`TrySolution`を完了します。 + 次の例では、3 つの オブジェクトを作成し、それぞれのオブジェクトが値を計算する `TrySolution` メソッドを呼び出します。 この例は、完了させるために、`TrySolution` に対する最初の呼び出しからの結果のみが必要です。 [!code-csharp[TPLDataflow_ReceiveAny#1](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_receiveany/cs/dataflowreceiveany.cs#1)] [!code-vb[TPLDataflow_ReceiveAny#1](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_receiveany/vb/dataflowreceiveany.vb#1)] - 最初の値を受け取るが完了するとオブジェクトの場合は、この例で定義、`ReceiveFromAny(T)`メソッドです。 `ReceiveFromAny(T)`メソッドの配列を受け取るオブジェクトし、これらの各オブジェクトにリンク、オブジェクト。 使用すると、ソースをターゲット ブロックにソース データフロー ブロックをリンクするメソッドは、データが利用可能になったにターゲットにメッセージを伝達します。 クラスは、提供される最初のメッセージだけを受け取り、`ReceiveFromAny(T)`メソッドを呼び出してその結果を生成する、メソッドです。 これに提供される最初のメッセージが生成されます、オブジェクト。 メソッドを受け取るオーバー ロードされたバージョンには、パラメーター、`unlinkAfterOne`に設定すると`True`ターゲットがソースから 1 つのメッセージを受信した後、ターゲットからリンクを解除するソース ブロックするよう指示します。 必要があります、ためにそのソースからリンクを解除するオブジェクト ソースの配列の間のリレーションシップと後にオブジェクトが不要、オブジェクトがメッセージを受信します。 + 完了した最初の オブジェクトの結果を受信するために、この例では `ReceiveFromAny(T)` メソッドを定義します。 `ReceiveFromAny(T)` メソッドは、 オブジェクトの配列を受け取り、これらの各オブジェクトと オブジェクトをリンクさせます。 メソッドを使用してソース データフロー ブロックをターゲット ブロックにリンクさせると、データが使用可能になったときにソースがターゲットにメッセージを反映させます。 クラスは提供される最初のメッセージのみを受け取るため、`ReceiveFromAny(T)` メソッドは メソッドを呼び出して、その結果を生成します。 これにより、 オブジェクトに提供される最初のメッセージが生成されます。 メソッドには、 パラメーターを取得するオーバーロードされたバージョンがあり (`unlinkAfterOne`)、`True` に設定された場合は、ターゲットがソースからメッセージを 1 つ受信した後に、ソース ブロックがターゲットからリンクを解除するように指示します。 ソースの配列と オブジェクトの関係は、 オブジェクトがメッセージを受信した後は必要なくなるため、 オブジェクトにはそのソースからリンクを解除することが重要です。 - 残りの呼び出しを有効にする`TrySolution`終了後、値が計算うちの 1 つに、`TrySolution`メソッドは、オブジェクトへの呼び出し後に取り消された`ReceiveFromAny(T)`を返します。 メソッドが返すときにこのオブジェクトが取り消されました。 + いずれかで値を計算した後に、`TrySolution` への残りの呼び出しを終了できるようにするには、`TrySolution` メソッドは `ReceiveFromAny(T)` への呼び出しが返された後にキャンセルされる、 オブジェクトを取得します。 メソッドは、この オブジェクトがキャンセルされたときに返されます。 ## コードのコンパイル コード例をコピーし、Visual Studio プロジェクトに貼り付けるか、`DataflowReceiveAny.cs` ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `DataflowReceiveAny.vb`) という名前のファイルに貼り付けてから、Visual Studio のコマンド プロンプト ウィンドウで次のコマンドを実行します。 [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] - **csc.exe/r:System.Threading.Tasks.Dataflow.dll DataflowReceiveAny.cs** + **csc.exe /r:System.Threading.Tasks.Dataflow.dll DataflowReceiveAny.cs** [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] - **vbc.exe/r:System.Threading.Tasks.Dataflow.dll DataflowReceiveAny.vb** - -## 信頼性の高いプログラミング - -## 関連項目 + **vbc.exe /r:System.Threading.Tasks.Dataflow.dll DataflowReceiveAny.vb** + +## 参照 [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/how-to-unwrap-a-nested-task.md b/docs/standard/parallel-programming/how-to-unwrap-a-nested-task.md index 7d1ed250ec2..14d71da7ce0 100644 --- a/docs/standard/parallel-programming/how-to-unwrap-a-nested-task.md +++ b/docs/standard/parallel-programming/how-to-unwrap-a-nested-task.md @@ -11,44 +11,48 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, how to unwrap nested tasks +helpviewer_keywords: +- tasks, how to unwrap nested tasks ms.assetid: a0769dd2-0f6d-48ca-8418-a9d39de7f450 -caps.latest.revision: "11" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 2da3de912abb693c4342e1ede02f273348e4b571 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 06d54efe5c8bac58746a1e01a194af55fde901b1 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 入れ子のタスクのラップを解除する -メソッドからタスクを返すを待機または次の例で示すように、そのタスクから継続します。 +以下の例に示すように、メソッドからタスクを返して、そのタスクで待機またはそのタスクから続行することができます。 [!code-csharp[TPL_Unwrap#01](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_unwrap/cs/unwrapprogram.cs#01)] [!code-vb[TPL_Unwrap#01](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_unwrap/vb/snippets1-3.vb#01)] - 前の例で、プロパティの型は`string`(`String` Visual Basic で)。 + 前の例では、 プロパティは `string` 型 (Visual Basic では `String`) です。 - ただし、一部のシナリオは、別のタスク内のタスクを作成し、入れ子のタスクを返す必要があります。 ここで、`TResult`外側のタスクの自体がタスク。 結果のプロパティは、次の例で、 `Task>` (C#) または`Task(Of Task(Of String))`Visual Basic でします。 + ただし、一部のシナリオでは、あるタスクを別のタスク内で作成してから、入れ子のタスクを返すことができます。 その場合、外側のタスクの `TResult` は、それ自体がタスクとなります。 次の例では、Result プロパティは、C# の場合は `Task>`、Visual Basic の場合は `Task(Of Task(Of String))` になります。 [!code-csharp[TPL_Unwrap#02](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_unwrap/cs/unwrapprogram.cs#02)] [!code-vb[TPL_Unwrap#02](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_unwrap/vb/snippets1-3.vb#02)] - 外側のタスクのラップを解除し、元のタスクを取得するコードを記述することはできますが、そのプロパティこのようなコードは、簡単に書き込むため例外とキャンセル要求を処理する必要があります。 このような状況のことをお勧めのいずれかを使用すること、拡張メソッドを次の例で示すようにします。 + 外側のタスクのラップを解除し、元のタスクとその プロパティを取得するようにコードを作成できますが、例外を処理して、キャンセル要求も処理する必要があるため、そのようなコードを作成するのは簡単ではありません。 このような場合は、以下の例に示すように、 拡張メソッドのいずれかを使用することをお勧めします。 [!code-csharp[TPL_UnWrap#03](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_unwrap/cs/unwrapprogram.cs#03)] [!code-vb[TPL_UnWrap#03](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_unwrap/vb/snippets1-3.vb#03)] - メソッドは、いずれかに変換するために使用できます`Task`または`Task>`(`Task(Of Task)`または`Task(Of Task(Of TResult))`Visual Basic で) に、`Task`または`Task`(`Task(Of TResult)` Visual Basic で)。 完全に、新しいタスクは、内側の入れ子になったタスクを表し、キャンセル状態とすべての例外が含まれています。 + メソッドを使用して、`Task` または `Task>` (Visual Basic では `Task(Of Task)` または `Task(Of Task(Of TResult))`) を `Task` または `Task` (Visual Basic では `Task(Of TResult)`) に変換することができます。 新しいタスクは完全に内側の入れ子のタスクを表し、キャンセル状態とすべての例外を含みます。 ## 例 - 次の例で使用する方法、拡張メソッド。 + 拡張メソッドの使用方法を次の例に示します。 [!code-csharp[TPL_UnWrap#04](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_unwrap/cs/unwrapprogram.cs#04)] [!code-vb[TPL_UnWrap#04](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_unwrap/vb/snippet04.vb#04)] -## 関連項目 +## 参照 [タスク ベースの非同期プログラミング](../../../docs/standard/parallel-programming/task-based-asynchronous-programming.md) diff --git a/docs/standard/parallel-programming/how-to-use-joinblock-to-read-data-from-multiple-sources.md b/docs/standard/parallel-programming/how-to-use-joinblock-to-read-data-from-multiple-sources.md index aaa3fdb6911..6210ec0de05 100644 --- a/docs/standard/parallel-programming/how-to-use-joinblock-to-read-data-from-multiple-sources.md +++ b/docs/standard/parallel-programming/how-to-use-joinblock-to-read-data-from-multiple-sources.md @@ -1,12 +1,8 @@ --- title: "方法: JoinBlock を使用して複数のソースからデータを読み込む" -ms.custom: ms.date: 03/30/2017 ms.prod: .net -ms.reviewer: -ms.suite: ms.technology: dotnet-standard -ms.tgt_pltfrm: ms.topic: article dev_langs: - csharp @@ -16,43 +12,44 @@ helpviewer_keywords: - TPL dataflow library, joining blocks in - dataflow blocks, joining in TPL ms.assetid: e9c1ada4-ac57-4704-87cb-2f5117f8151d -caps.latest.revision: "7" author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 41445e4874b94809840ecf9ebda6f27ccc955c9b -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f7d4e552404f99580bceafe7f900db4607201c3d +ms.sourcegitcommit: 6a9030eb5bd0f00e1d144f81958adb195cfb1f6f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/10/2018 --- # 方法: JoinBlock を使用して複数のソースからデータを読み込む -このドキュメントの使用方法を説明します、クラスを複数のソースからデータがある場合、操作を実行します。 最短一致モードを使用して、データ ソースをより効率的に共有する複数の結合ブロックを有効にする方法も示します。 - -> [!TIP] -> TPL データ フローのライブラリ ( 名前空間) は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と一緒に配布されません。 インストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**プロジェクト メニューのおよびオンラインで検索から、`Microsoft.Tpl.Dataflow`パッケージ。 - +このドキュメントでは、複数のソースからデータを使用できるときに クラスを使用して操作を実行する方法について説明します。 また、最短一致モードを使い、複数の結合ブロックを有効にして、データ ソースをより効率的に共有する方法についても説明します。 + +[!INCLUDE [tpl-install-instructions](../../../includes/tpl-install-instructions.md)] + ## 例 - 次の例では、次の 3 つのリソースの種類、 `NetworkResource`、 `FileResource`、および`MemoryResource`、し、リソースが使用可能になるときに、操作を実行します。 この例は、`NetworkResource`と`MemoryResource`最初の操作を実行するためにペアと`FileResource`と`MemoryResource`ペアが 2 番目の操作を実行するためにします。 この例ではすべての必要なリソースが利用可能なときに発生するこれらの操作を有効にする、クラスです。 ときに、オブジェクトは、すべてのソースからデータを受け取るをターゲットにあり、この例では、そのデータを伝達するオブジェクト。 両方の共有プールからオブジェクトを読み取る`MemoryResource`オブジェクト。 + 次の例では、3 つのリソースの種類 (`NetworkResource`、`FileResource`、および `MemoryResource`) を定義し、リソースが使用できるようになったときに操作を実行します。 この例では、最初の操作を実行するために `NetworkResource` と `MemoryResource` のペアが必要であり、2 番目の操作を実行するために `FileResource` と `MemoryResource` のペアが必要です。 必要なすべてのリソースを使用できるようになったときにこれらの操作を実行できるようにするために、この例では クラスを使用します。 オブジェクトがすべてのソースからデータを受け取ると、そのデータをターゲット (この例では オブジェクト) に伝達します。 どちらの オブジェクトも `MemoryResource` オブジェクトの共有プールから読み取ります。 [!code-csharp[TPLDataflow_NonGreedyJoin#1](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_nongreedyjoin/cs/nongreedyjoin.cs#1)] [!code-vb[TPLDataflow_NonGreedyJoin#1](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_nongreedyjoin/vb/nongreedyjoin.vb#1)] - 共有プールの効率的な使用を有効にする`MemoryResource`オブジェクトをこの例で指定、を持つオブジェクト、プロパティに設定`False`を作成する最短一致モードで動作するオブジェクト。 最短一致の結合ブロックは、各ソースから 1 つが読み取られるまで、すべての受信メッセージを延期します。 延期されたメッセージのいずれかが別のブロックによって受け入れられて、結合ブロックは、プロセスを再起動します。 最短一致モードでは、共有する他のブロックがデータを待つ進行する 1 つまたは複数のソース ブロックの結合ブロックを有効します。 この例では場合、`MemoryResource`にオブジェクトが追加、`memoryResources`プール、最初の結合が 2 番目のデータ ソースを受信するブロックが進行することができます。 この例では、最長一致モードを使用したは、既定では、1 つの結合ブロックがかかると、`MemoryResource`オブジェクトし、第 2 のリソース使用可能になるまで待機します。 ただし、他の結合ブロックに使用可能な 2 番目のデータ ソースがある場合は、ことはできません進行のため、`MemoryResource`オブジェクトが、その他の結合ブロックによって取得されています。 + `MemoryResource` オブジェクトの共有プールを効率的に使用するために、この例では、 プロパティを `False` に設定した オブジェクトを指定して、最短一致モードで動作する オブジェクトを作成します。 最短一致の結合ブロックの場合、各ソースから使用できるようになるまで、すべての受信メッセージは延期されます。 延期されたメッセージのいずれかが別のブロックで受け入れられた場合、結合ブロックはプロセスを再開します。 最短一致モードでは、1 つ以上のソース ブロックを共有する結合ブロックが、他のブロックがデータを待機するときに転送を進めることができます。 この例では、`MemoryResource` オブジェクトが `memoryResources` プールに追加された場合、その 2 番目のデータ ソースを受け取る最初の結合ブロックが転送を進めることができます。 この例で、既定である最長一致モードを使用する場合、1 つの結合ブロックが `MemoryResource` オブジェクトを受け取り、2 番目のリソースを使用できるようになるまで待機することができます。 ただし、他の結合ブロックに使用できる 2 番目のデータ ソースがある場合は、`MemoryResource` オブジェクトが他の結合ブロックによって取得されているため、転送を進めることはできません。 ## コードのコンパイル コード例をコピーし、Visual Studio プロジェクトに貼り付けるか、`DataflowNonGreedyJoin.cs` ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `DataflowNonGreedyJoin.vb`) という名前のファイルに貼り付けてから、Visual Studio のコマンド プロンプト ウィンドウで次のコマンドを実行します。 [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] - **csc.exe/r:System.Threading.Tasks.Dataflow.dll DataflowNonGreedyJoin.cs** + **csc.exe /r:System.Threading.Tasks.Dataflow.dll DataflowNonGreedyJoin.cs** [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] - **vbc.exe/r:System.Threading.Tasks.Dataflow.dll DataflowNonGreedyJoin.vb** + **vbc.exe /r:System.Threading.Tasks.Dataflow.dll DataflowNonGreedyJoin.vb** ## 信頼性の高いプログラミング - 最短一致の結合の使用は、アプリケーションでデッドロックを防止できます。 ソフトウェア アプリケーションで*デッドロック*2 つ以上のプロセスの各リソースを保持して、その他のリソースを解放する別のプロセスをお互いに待機するときに発生します。 2 つを定義するアプリケーションを考えてみますオブジェクト。 両方のオブジェクトは各は、次の 2 つの共有ソース ブロックからデータを読み取ります。 最長一致モードで場合は、最初のソースから 1 つの結合ブロックを読み取り、2 番目のソースから 2 番目の結合ブロックを読み取りでアプリケーションのリソースを解放する、他の両方の結合ブロックが相互に待機するためデッドロック可能性があります。 最短一致モードで各結合ブロックのすべてのデータが、使用可能な場合にのみ、そのソースおよびそのため、デッドロックの危険性からの読み取りが排除されます。 + 最短一致の結合を使用すると、アプリケーションのデッドロックを防ぐのにも役立ちます。 ソフトウェア アプリケーションで、2 つ以上のプロセスがそれぞれリソースを確保し、別のプロセスがリソースを解放するのをお互いに待機すると、*デッドロック*が発生します。 2 つの オブジェクトを定義するアプリケーションを考えてみましょう。 両方のオブジェクトは、それぞれ 2 つの共有ソース ブロックからデータを読み取ります。 最長一致モードでは、一方の結合ブロックが最初のソースから読み取り、もう一方の結合ブロックが 2 番目のソースから読み取る場合、どちらの結合ブロックも他方がリソースを解放するまで待機するため、アプリケーションがデッドロックする可能性があります。 最短一致モードの場合、各結合ブロックは、すべてのデータを使用できる場合にのみソースから読み取ります。そのため、デッドロックのリスクはなくなります。 -## 関連項目 +## 参照 [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/how-to-wrap-eap-patterns-in-a-task.md b/docs/standard/parallel-programming/how-to-wrap-eap-patterns-in-a-task.md index c45afec002e..becfb274a91 100644 --- a/docs/standard/parallel-programming/how-to-wrap-eap-patterns-in-a-task.md +++ b/docs/standard/parallel-programming/how-to-wrap-eap-patterns-in-a-task.md @@ -11,24 +11,28 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, how to wrap EAP patterns +helpviewer_keywords: +- tasks, how to wrap EAP patterns ms.assetid: f11ed467-af2f-4504-8a2e-299a6c36d44e -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: ae9d90c9bb3d0e8d315cbef510cdfe1b54e66da4 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 9e451c3ce8bb50cb17da7fef25ae0317bcb82c3e +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: タスクに EAP パターンをラップする -次の例を使用して 1 つのタスクとイベント ベースの非同期パターン (EAP) の操作の任意の順序を公開する方法を示しています、です。 使用する方法も示します、メソッドを呼び出す、組み込みの取り消しで、オブジェクト。 +次の例では、 を使用して、任意のシーケンスのイベント ベースの非同期パターン (EAP) 操作を公開する方法を示します。 また、この例は を使用して、 オブジェクトの組み込みキャンセル メソッドを呼び出す方法も示しています。 ## 例 [!code-csharp[FromAsync#08](../../../samples/snippets/csharp/VS_Snippets_Misc/fromasync/cs/fromasync.cs#08)] [!code-vb[FromAsync#08](../../../samples/snippets/visualbasic/VS_Snippets_Misc/fromasync/vb/module1.vb#08)] -## 関連項目 +## 参照 [TPL と従来の .NET Framework 非同期プログラミング](../../../docs/standard/parallel-programming/tpl-and-traditional-async-programming.md) diff --git a/docs/standard/parallel-programming/how-to-write-a-custom-plinq-aggregate-function.md b/docs/standard/parallel-programming/how-to-write-a-custom-plinq-aggregate-function.md index 62ac30a5aa8..378ca969c47 100644 --- a/docs/standard/parallel-programming/how-to-write-a-custom-plinq-aggregate-function.md +++ b/docs/standard/parallel-programming/how-to-write-a-custom-plinq-aggregate-function.md @@ -11,34 +11,38 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, how to create aggregate function +helpviewer_keywords: +- PLINQ queries, how to create aggregate function ms.assetid: 5a70dd49-ab2a-4798-b551-196ee7042b1a -caps.latest.revision: "7" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 8b098f21e29d0d59cd99ddbb64af6246d9953a3a -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 210e9913ab3eba636ff99b7610df05655246f4eb +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: カスタムの PLINQ 集約関数を記述する -この例を使用する方法を示しています、ソース シーケンスに、カスタム集計関数を適用する方法です。 +この例は、 メソッドを使用して、カスタム集計関数をソース シーケンスに適用する方法を示しています。 > [!WARNING] -> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、次を参照してください。 [PLINQ で高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)です。 +> この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、「[PLINQ での高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 ## 例 - 次の例では、整数のシーケンスの標準偏差を計算します。 + 次の例では、整数シーケンスの標準偏差を計算します。 [!code-csharp[PLINQ#31](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#31)] [!code-vb[PLINQ#31](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinqsnippets1.vb#31)] - この例では、PLINQ 固有の集計の標準クエリ演算子のオーバー ロードを使用します。 このオーバー ロードは余分な3 番目の入力パラメーターとして。 このデリゲートは、集計の結果の最終的な計算が実行する前に、すべてのスレッドからの結果を結合します。 この例では合計が追加のすべてのスレッドからです。 + この例では、PLINQ に固有の Aggregate 標準クエリ演算子のオーバーロードを使用します。 このオーバーロードでは、3 番目の入力パラメーターとして、追加の を受け取ります。 このデリゲートは、集計結果で最終計算を実行する前に、すべてのスレッドからの結果を結合します。 この例では、すべてのスレッドからの合計をまとめます。 - ラムダ式の本体は、単一の式の戻り値の場合、デリゲートは、式の値。 + ラムダ式の本体が単一の式で構成されている場合、 デリゲートの戻り値は式の値になることに注意してください。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/how-to-write-a-parallel-for-loop-with-thread-local-variables.md b/docs/standard/parallel-programming/how-to-write-a-parallel-for-loop-with-thread-local-variables.md index ec338077872..d729ca5345b 100644 --- a/docs/standard/parallel-programming/how-to-write-a-parallel-for-loop-with-thread-local-variables.md +++ b/docs/standard/parallel-programming/how-to-write-a-parallel-for-loop-with-thread-local-variables.md @@ -11,17 +11,21 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: parallel for loops, how to use local state +helpviewer_keywords: +- parallel for loops, how to use local state ms.assetid: 68384064-7ee7-41e2-90e3-71f00bde01bb -caps.latest.revision: "23" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 2e0b3e28c95d9ccfb0ecd1954e16960576d8f115 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 004998a8891d92e2d1f805b3353fbe93864dcf1d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: スレッド ローカル変数を使用する Parallel.For ループを記述する 次の例に、 ループによって生成される個別のタスクごとの状態を、スレッド ローカル変数を使用して格納および取得する方法を示します。 スレッド ローカル変数を使用することで、共有状態への多数のアクセスを同期するオーバーヘッドを回避できます。 反復処理ごとに共有リソースを作成する代わりに、タスクの反復処理のすべてが完了するまで、値を計算して格納します。 この場合、最終結果を共有リソースに 1 回書き込んだり、別のメソッドに渡したりすることができます。 @@ -48,9 +52,9 @@ Function() new MyClass() 5 番目のパラメーターが定義するメソッドは、特定のスレッドでのすべての反復処理が完了した時点で 1 回だけ呼び出されます。 この場合も、入力引数の型は メソッドの型引数、および本体のラムダ式によって返される型と一致します。 この例では、スレッド セーフな方法で、この値をクラス スコープで変数に追加するために、 メソッドを呼び出します。 スレッド ローカル変数を使用することで、このクラス変数をループのすべての反復処理で作成する手間を省きました。 - ラムダ式を使用する方法の詳細については、次を参照してください。 [PLINQ および TPL のラムダ式](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md)です。 + ラムダ式の使用方法の詳細については、「[PLINQ および TPL のラムダ式](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md)」を参照してください。 -## 関連項目 +## 参照 [データの並列化](../../../docs/standard/parallel-programming/data-parallelism-task-parallel-library.md) [並列プログラミング](../../../docs/standard/parallel-programming/index.md) [タスク並列ライブラリ (TPL)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md) diff --git a/docs/standard/parallel-programming/how-to-write-a-parallel-foreach-loop-with-thread-local-variables.md b/docs/standard/parallel-programming/how-to-write-a-parallel-foreach-loop-with-thread-local-variables.md index 1f4726b4dfe..0125283af36 100644 --- a/docs/standard/parallel-programming/how-to-write-a-parallel-foreach-loop-with-thread-local-variables.md +++ b/docs/standard/parallel-programming/how-to-write-a-parallel-foreach-loop-with-thread-local-variables.md @@ -11,22 +11,26 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: parallel foreach loop, how to use local state +helpviewer_keywords: +- parallel foreach loop, how to use local state ms.assetid: 24b10041-b30b-45cb-aa65-66cf568ca76d -caps.latest.revision: "18" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 6102274f75d2fe66b89f917cf9095d3a6dfaa3e2 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4c65edd8959cbf5f83e3353770f71cad130953d1 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: スレッド ローカル変数を使用する Parallel.ForEach ループを記述する スレッド ローカル変数を持つ メソッドを記述する方法を次の例に示します。 ループが実行されると、そのソース コレクションが複数のパーティションに分割されます。 各パーティションには、"スレッド ローカル" 変数が個別にコピーされます ("スレッド ローカル" という用語は少し不正確です。1 つのスレッド上で 2 つのパーティションが実行されることがあるからです)。 - この例のコードおよびパラメーターは、対応する メソッドによく似ています。 詳細については、次を参照してください。[する方法: スレッド ローカル変数を使用する Parallel.For ループを記述](../../../docs/standard/parallel-programming/how-to-write-a-parallel-for-loop-with-thread-local-variables.md)です。 + この例のコードおよびパラメーターは、対応する メソッドによく似ています。 詳細については、「[方法: スレッド ローカル変数を使用する Parallel.For ループを記述する](../../../docs/standard/parallel-programming/how-to-write-a-parallel-for-loop-with-thread-local-variables.md)」を参照してください。 ループでスレッド ローカル変数を使用するには、2 つのタイプのパラメーターを取るメソッド オーバーロードのうち、いずれか 1 つを呼び出す必要があります。 最初の型パラメーター `TSource` でソース要素の型を指定し、2 番目の型パラメーター `TLocal` でスレッド ローカル変数の型を指定します。 @@ -54,7 +58,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[TPL_Parallel#04](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_parallel/cs/foreachthreadlocal.cs#04)] [!code-vb[TPL_Parallel#04](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_parallel/vb/foreachthreadlocal.vb#04)] -## 関連項目 +## 参照 [データの並列化](../../../docs/standard/parallel-programming/data-parallelism-task-parallel-library.md) [方法: スレッド ローカル変数を使用する Parallel.For ループを記述する](../../../docs/standard/parallel-programming/how-to-write-a-parallel-for-loop-with-thread-local-variables.md) [PLINQ および TPL のラムダ式](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md) diff --git a/docs/standard/parallel-programming/how-to-write-a-simple-parallel-for-loop.md b/docs/standard/parallel-programming/how-to-write-a-simple-parallel-for-loop.md index 291781f800c..ae25d170fb8 100644 --- a/docs/standard/parallel-programming/how-to-write-a-simple-parallel-for-loop.md +++ b/docs/standard/parallel-programming/how-to-write-a-simple-parallel-for-loop.md @@ -16,15 +16,18 @@ helpviewer_keywords: - for loop, parallel construction in .NET - parallel for loops, how to use ms.assetid: 9029ba7f-a9d1-4526-8c84-c88716dba5d4 -caps.latest.revision: "18" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: ed621f41e76addde777b974732470fcfbc903563 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3a70dcb5e3811a18e23aeb2ebf0940d2c52f49a9 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 単純な Parallel.For ループを記述する このトピックでは、 メソッドを示す 2 つの例を示しています。 最初の例では メソッドのオーバー ロードを使用し、2 番目の例では のオーバー ロードを使用しています。これらは メソッドの 2 つの最も単純なオーバーロードです。 メソッドのこれらの 2 つのオーバー ロードは、ループをキャンセルする必要がない場合、ループのイテレーションから抜ける場合、またはいずれかのスレッドローカル状態を維持する場合に使用します。 @@ -49,7 +52,7 @@ ms.lasthandoff: 11/21/2017 ループを含む任意のコードを並列処理する場合、1 つの重要な目標は、並列処理のオーバーヘッドがパフォーマンス上の利点を無にするところまで並列化しすぎることなく、できるだけプロセッサを活用することです。 この特殊な例では、内側のループで実行される作業があまり多くないため、外側のループのみが並列化されています。 少量の作業と不適切なキャッシュの影響が組み合わさって、結果として入れ子になった並列ループのパフォーマンスが低下することがあります。 このため、大部分のシステムでは、外側のループだけを並列化することで、最大限の効果を得ることができると言えます。 ## デリゲート - この のオーバーロードの 3 番目のパラメーターは、`Action` 型 (C#) または`Action(Of Integer)` 型 (Visual Basic) のデリゲートです。 `Action` デリゲートは、0 種類、1 種類、または 16 種類のパラメーターのいずれがあっても常に void を返します。 Visual Basic では、`Action` の動作は `Sub` で定義されます。 例では、ラムダ式を使用してデリゲートを作成していますが、他の方法でも同様にデリゲートを作成することができます。 詳細については、次を参照してください。 [PLINQ および TPL のラムダ式](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md)です。 + この のオーバーロードの 3 番目のパラメーターは、`Action` 型 (C#) または`Action(Of Integer)` 型 (Visual Basic) のデリゲートです。 `Action` デリゲートは、0 種類、1 種類、または 16 種類のパラメーターのいずれがあっても常に void を返します。 Visual Basic では、`Action` の動作は `Sub` で定義されます。 例では、ラムダ式を使用してデリゲートを作成していますが、他の方法でも同様にデリゲートを作成することができます。 詳細については、「[PLINQ および TPL のラムダ式](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md)」を参照してください。 ## イテレーション値 デリゲートは、値が現在のイテレーションである 1 つの入力パラメーターを受け取ります。 このイテレーション値はランタイムによって提供され、その開始値は、現在のスレッドで処理されているソースのセグメント (パーティション) の最初の要素のインデックスです。 @@ -68,9 +71,9 @@ ms.lasthandoff: 11/21/2017 ## コードのコンパイル -- コピーし、Visual Studio 2010 プロジェクトにこのコードを貼り付けます。 +- このコードをコピーして、Visual Studio 2010 プロジェクトに貼り付けます。 -## 関連項目 +## 参照 [データの並列化](../../../docs/standard/parallel-programming/data-parallelism-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/how-to-write-a-simple-parallel-foreach-loop.md b/docs/standard/parallel-programming/how-to-write-a-simple-parallel-foreach-loop.md index 434c3b4b747..4f6b8220f09 100644 --- a/docs/standard/parallel-programming/how-to-write-a-simple-parallel-foreach-loop.md +++ b/docs/standard/parallel-programming/how-to-write-a-simple-parallel-foreach-loop.md @@ -15,18 +15,21 @@ helpviewer_keywords: - foreach, parallel version - parallel programming, foreach ms.assetid: cb5fab92-1c19-499e-ae91-8b7525dd875f -caps.latest.revision: "19" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 16d8cd3c3c01c2f9d83786e78f0eb1c45a38a49b -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: bb628c0de1f0e4452ae13b5f5ee392084118bea5 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 単純な Parallel.ForEach ループを記述する -この例を使用する方法を示しています、を任意にデータの並列化を有効にするループまたはデータ ソース。 +この例は、 ループを使用して、 または データ ソースでのデータの並列処理を有効にする方法を示しています。 > [!NOTE] > ここでは、ラムダ式を使用して PLINQ でデリゲートを定義します。 C# または Visual Basic のラムダ式についての情報が必要な場合は、「[Lambda Expressions in PLINQ and TPL (PLINQ および TPL のラムダ式)](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md)」を参照してください。 @@ -35,26 +38,26 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[TPL_Parallel#03](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_parallel/cs/simpleforeach.cs#03)] [!code-vb[TPL_Parallel#03](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_parallel/vb/simpleforeach.vb#03)] - Aループの動作と同様に、ループします。 ソース コレクションがパーティション分割し、システム環境に基づく複数のスレッドで作業をスケジュールします。 システムのより多くのプロセッサが速ければ速いほど、並列メソッドが実行されます。 一部のソース コレクションでは、順次ループが、ソース、および実行されている作業の種類のサイズによっては、高速な可能性があります。 パフォーマンスの詳細については、次を参照してください[データとタスクの並列化における注意点。](../../../docs/standard/parallel-programming/potential-pitfalls-in-data-and-task-parallelism.md) + ループは ループのように動作します。 ソース コレクションはパーティション分割され、作業はシステム環境に基づいて複数のスレッドでスケジューリングされます。 システムのプロセッサの数が多いほど、並列メソッドの実行が速くなります。 一部のソース コレクションでは、ソースのサイズや実行される作業の種類に応じて、順次ループがより高速になる可能性があります。 パフォーマンスの詳細については、「[データとタスクの並列化における注意点](../../../docs/standard/parallel-programming/potential-pitfalls-in-data-and-task-parallelism.md)」を参照してください。 - 並列ループの詳細については、次を参照してください。[する方法: 単純な Parallel.For ループを記述](../../../docs/standard/parallel-programming/how-to-write-a-simple-parallel-for-loop.md)です。 + 並列ループの詳細については、「[方法: 単純な Parallel.For ループを記述する](../../../docs/standard/parallel-programming/how-to-write-a-simple-parallel-for-loop.md)」を参照してください。 - 使用する非ジェネリック コレクションを使用することができますを使用して、次の例のように、ジェネリック コレクションにコレクションを変換する拡張メソッド。 + 非ジェネリック コレクションで を使用する場合は、次の例に示すように、 拡張メソッドを使用して、コレクションをジェネリック コレクションに変換することができます。 [!code-csharp[TPL_Parallel#07](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_parallel/cs/nongeneric.cs#07)] [!code-vb[TPL_Parallel#07](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_parallel/vb/nongeneric.vb#07)] - 処理を並列化する、Parallel LINQ (PLINQ) を使用することもできます。データ ソース。 PLINQ では、宣言型のクエリ構文を使用してループを再現することができます。 詳細については、「[Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md)」を参照してください。 + また、Parallel LINQ (PLINQ) を使用して、 データ ソースの処理を並列化することもできます。 PLINQ では、宣言型のクエリ構文を使用して、ループの動作を表すことができます。 詳細については、「[Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md)」を参照してください。 ## コードのコンパイル -- このコードをコピーして、 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] 2010年コンソール アプリケーション プロジェクト。 +- このコードをコピーして、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] 2010 コンソール アプリケーション プロジェクトに貼り付けます。 - System.Drawing.dll への参照を追加します。 -- F5 キーを押して +- F5 キーを押します。 -## 関連項目 +## 参照 [データの並列化](../../../docs/standard/parallel-programming/data-parallelism-task-parallel-library.md) [並列プログラミング](../../../docs/standard/parallel-programming/index.md) [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/how-to-write-messages-to-and-read-messages-from-a-dataflow-block.md b/docs/standard/parallel-programming/how-to-write-messages-to-and-read-messages-from-a-dataflow-block.md index c63a083f65d..7e328220538 100644 --- a/docs/standard/parallel-programming/how-to-write-messages-to-and-read-messages-from-a-dataflow-block.md +++ b/docs/standard/parallel-programming/how-to-write-messages-to-and-read-messages-from-a-dataflow-block.md @@ -1,12 +1,8 @@ --- title: "方法: データフロー ブロックに対してメッセージの読み取りと書き込みを行う" -ms.custom: ms.date: 03/30/2017 ms.prod: .net -ms.reviewer: -ms.suite: ms.technology: dotnet-standard -ms.tgt_pltfrm: ms.topic: article dev_langs: - csharp @@ -15,40 +11,41 @@ helpviewer_keywords: - Task Parallel Library, dataflows - TPL dataflow library, reading and writing messages ms.assetid: 1a9bf078-aa82-46eb-b95a-f87237f028c5 -caps.latest.revision: "8" author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: bf609a8c350a44fc802cce0ec10693431bbf4f42 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b64ef07c6ef28377c11dc879ad17f7c806e9f66a +ms.sourcegitcommit: 6a9030eb5bd0f00e1d144f81958adb195cfb1f6f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/10/2018 --- # 方法: データフロー ブロックに対してメッセージの読み取りと書き込みを行う -このドキュメントでは、TPL データフロー ライブラリを使用して、データフロー ブロックとの間でメッセージを読み書きする方法を説明します。 TPL データフロー ライブラリには、データフロー ブロックへのメッセージの書き込みとデータフロー ブロックからのメッセージの読み取りのための、同期と非同期の両方のメソッドが用意されています。 このドキュメントでは、クラスです。 クラスがメッセージをバッファーして、メッセージ ソースとして、メッセージのターゲットとしてが動作します。 - -> [!TIP] -> TPL データ フローのライブラリ ( 名前空間) は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と一緒に配布されません。 インストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**プロジェクト メニューのおよびオンラインで検索から、`Microsoft.Tpl.Dataflow`パッケージ。 - +このドキュメントでは、TPL データフロー ライブラリを使用して、データフロー ブロックとの間でメッセージを読み書きする方法を説明します。 TPL データフロー ライブラリには、データフロー ブロックへのメッセージの書き込みとデータフロー ブロックからのメッセージの読み取りのための、同期と非同期の両方のメソッドが用意されています。 このドキュメントでは、 クラスを使用します。 クラスは、メッセージをバッファーし、メッセージ ソースとメッセージ ターゲットの両方として動作します。 + +[!INCLUDE [tpl-install-instructions](../../../includes/tpl-install-instructions.md)] + ## データフロー ブロックへの同期書き込みとデータフロー ブロックからの同期読み取り - 次の例では、メソッドへの書き込みをデータフローのブロックとメソッドを同じオブジェクトから読み取る。 + 次の例では、 メソッドを使用して データフロー ブロックを書き込み、 メソッドを使用して同じオブジェクトから読み取ります。 [!code-csharp[TPLDataflow_ReadWrite#2](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_readwrite/cs/dataflowreadwrite.cs#2)] [!code-vb[TPLDataflow_ReadWrite#2](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_readwrite/vb/dataflowreadwrite.vb#2)] - 使用することも、次の例で示すように、データ フロー ブロックの読み取ります。 メソッドは、現在のスレッドをブロックしませんし、場合によってはデータをポーリングする場合に便利です。 + また、次の例に示すように、 メソッドを使用してデータフロー ブロックから読み取ることもできます。 メソッドは、現在のスレッドをブロックしないため、データを時々ポーリングする場合に便利です。 [!code-csharp[TPLDataflow_ReadWrite#3](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_readwrite/cs/dataflowreadwrite.cs#3)] [!code-vb[TPLDataflow_ReadWrite#3](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_readwrite/vb/dataflowreadwrite.vb#3)] - メソッドは同期的に、機能、 2 番目のループは、データを読み取る前に、前の例のオブジェクトがすべてのデータを受信します。 次の例では、最初の例を拡張を使用してからの読み取りと同時に書き込み、メッセージ ブロックにします。 操作を実行します同時に、値には書き込まれません、特定の順序でのオブジェクト。 + メソッドは同期的に動作するため、前の例の オブジェクトは、2 つ目のループがデータを読み取る前にすべてのデータを受け取ります。 次の例では、 を使用して最初の例を拡張し、メッセージ ブロックからの読み取りとメッセージ ブロックへの書き込みを同時に行います。 は同時にアクションを実行するため、値が特定の順序で オブジェクトに書き込まれることはありません。 [!code-csharp[TPLDataflow_ReadWrite#4](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_readwrite/cs/dataflowreadwrite.cs#4)] [!code-vb[TPLDataflow_ReadWrite#4](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_readwrite/vb/dataflowreadwrite.vb#4)] ## データフロー ブロックへの非同期書き込みとデータフロー ブロックからの非同期読み取り - 次の例で、メソッドを非同期的に書き込む、オブジェクトおよびを非同期的に、同じオブジェクトから読み取るメソッドです。 この例では、[async](~/docs/csharp/language-reference/keywords/async.md) 演算子と [await](~/docs/csharp/language-reference/keywords/await.md) 演算子 (Visual basic では [Async](~/docs/visual-basic/language-reference/modifiers/async.md) と [Await](~/docs/visual-basic/language-reference/operators/await-operator.md)) を使用して、ターゲット ブロックへのデータの送信とターゲット ブロックからのデータの読み取りを非同期的に行います。 メソッドはメッセージを延期するデータフロー ブロックを有効にする必要があります。 メソッドは、そのデータに使用可能な場合にデータを操作する場合に便利です。 メッセージ ブロック間でメッセージが伝達されるしくみの詳細については、[データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md)に関するページの「Message Passing (メッセージ パッシング)」のセクションを参照してください。 + 次の例では、 メソッドを使用して オブジェクトに非同期的に書き込み、 メソッドを使用して同じオブジェクトから非同期的に読み取ります。 この例では、[async](~/docs/csharp/language-reference/keywords/async.md) 演算子と [await](~/docs/csharp/language-reference/keywords/await.md) 演算子 (Visual basic では [Async](~/docs/visual-basic/language-reference/modifiers/async.md) と [Await](~/docs/visual-basic/language-reference/operators/await-operator.md)) を使用して、ターゲット ブロックへのデータの送信とターゲット ブロックからのデータの読み取りを非同期的に行います。 メソッドは、メッセージを延期するデータフロー ブロックを有効にする必要があるときに便利です。 メソッドは、データが利用できるようになったときにデータを操作する必要がある場合に便利です。 メッセージ ブロック間でメッセージが伝達されるしくみの詳細については、[データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md)に関するページの「Message Passing (メッセージ パッシング)」のセクションを参照してください。 [!code-csharp[TPLDataflow_ReadWrite#5](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_readwrite/cs/dataflowreadwrite.cs#5)] [!code-vb[TPLDataflow_ReadWrite#5](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_readwrite/vb/dataflowreadwrite.vb#5)] @@ -73,5 +70,5 @@ ms.lasthandoff: 10/18/2017 ## 次の手順 この例は、メッセージ ブロックからの読み取りとメッセージ ブロックへの書き込みを直接行う方法を示しています。 データフロー ブロックを接続して、データフロー ブロックのリニア シーケンスである "*パイプライン*" を作成するか、またはデータフロー ブロックのグラフである "*ネットワーク*" を作成することもできます。 パイプラインまたはネットワークでは、データが使用可能になると、ソースはターゲットに非同期的にデータを伝達します。 基本的なデータフロー パイプラインを作成する例については、「[Walkthrough: Creating a Dataflow Pipeline (チュートリアル: データフロー パイプラインの作成)](../../../docs/standard/parallel-programming/walkthrough-creating-a-dataflow-pipeline.md)」を参照してください。 さらに複雑なデータフロー ネットワークを作成する例については、「[Walkthrough: Using Dataflow in a Windows Forms Application (チュートリアル: Windows フォーム アプリケーションでのデータフローの使用)](../../../docs/standard/parallel-programming/walkthrough-using-dataflow-in-a-windows-forms-application.md)」を参照してください。 -## 関連項目 +## 参照 [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/introduction-to-plinq.md b/docs/standard/parallel-programming/introduction-to-plinq.md index 6528040cbde..b1cc3454a68 100644 --- a/docs/standard/parallel-programming/introduction-to-plinq.md +++ b/docs/standard/parallel-programming/introduction-to-plinq.md @@ -11,17 +11,21 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, introduction to +helpviewer_keywords: +- PLINQ queries, introduction to ms.assetid: eaa720d8-8999-4eb7-8df5-3c19ca61cad0 -caps.latest.revision: "22" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: db9c3e16d4a8073fbce636f37490f719dbd93e4d -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d14f82fa73400695faad49f010e6ef52a14dd9e3 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # PLINQ の概要 ## 並列クエリとは @@ -29,7 +33,7 @@ ms.lasthandoff: 11/21/2017 Parallel LINQ (PLINQ) は、LINQ パターンの並列実装です。 PLINQ クエリは、あらゆる意味において、並列ではない LINQ to Objects クエリに似ています。 PLINQ クエリは、[!INCLUDE[vbteclinq](../../../includes/vbteclinq-md.md)] の順次クエリと同様、メモリ内の または データ ソースで実行され、遅延実行が存在するので、クエリが列挙されるまでは実行されません。 主な相違点は、PLINQ は、システムのすべてのプロセッサを十分に活用しようとする点です。 そのために、データ ソースをセグメントにパーティション分割し、複数のプロセッサで個々のワーカー スレッドの各セグメントに対してクエリを並行実行します。 多くの場合、並行実行によって、クエリは非常に高速に処理されます。 - 並行実行は、PLINQ は、レガシ コードを追加して多くの場合だけ、クエリの種類によってより大幅なパフォーマンス向上を実現できます、クエリ、データ ソースを操作します。 ただし、並列処理にはある程度の複雑さが伴うため、すべてのクエリ操作が PLINQ でより速く実行されるわけではありません。 実際、一部のクエリについては、並列化によって処理速度が遅くなります。 そのため、順序付けなどの問題が並列クエリに与える影響を理解しておく必要があります。 詳細については、「[Understanding Speedup in PLINQ (PLINQ での高速化について)](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 + 一部の種類のクエリについては、データ ソースに クエリ操作を追加して並行実行することで、レガシ コードよりも大幅なパフォーマンスの向上を PLINQ で実現できます。 ただし、並列処理にはある程度の複雑さが伴うため、すべてのクエリ操作が PLINQ でより速く実行されるわけではありません。 実際、一部のクエリについては、並列化によって処理速度が遅くなります。 そのため、順序付けなどの問題が並列クエリに与える影響を理解しておく必要があります。 詳細については、「[Understanding Speedup in PLINQ (PLINQ での高速化について)](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 > [!NOTE] > ここでは、ラムダ式を使用して PLINQ でデリゲートを定義します。 C# または Visual Basic のラムダ式についての情報が必要な場合は、「[Lambda Expressions in PLINQ and TPL (PLINQ および TPL のラムダ式)](../../../docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md)」を参照してください。 @@ -54,7 +58,7 @@ ms.lasthandoff: 11/21/2017 ||PLINQ が並列化の結果を consumer スレッドの単一のシーケンスに再マージできる場合は、その方法についてのヒントを示します。| ||既定の動作が順次実行である場合でも、PLINQ がクエリを並列化する必要があるかどうかを指定します。| ||マルチスレッドの列挙型メソッド。クエリの結果の反復処理とは異なり、先に consumer スレッドに再マージしなくても、結果を並列処理できます。| -|オーバー ロード|PLINQ 固有のオーバーロードで、スレッド ローカルのパーティション上で中間的な集約を行うと共に、すべてのパーティションの結果を結合する最終的なアグリゲーション関数も使用できます。| +| オーバーロード|PLINQ 固有のオーバーロードで、スレッド ローカルのパーティション上で中間的な集約を行うと共に、すべてのパーティションの結果を結合する最終的なアグリゲーション関数も使用できます。| ## オプトイン モデル クエリを記述するときに、次の例に示すようにデータ ソースの 拡張メソッドを呼び出し、PLINQ を有効にします。 @@ -68,7 +72,7 @@ ms.lasthandoff: 11/21/2017 既定では、PLINQ は保守的です。 PLINQ インフラストラクチャは、実行時に、クエリの全体的な構造を分析します。 並列化によってクエリを高速化できることが見込まれる場合は、PLINQ は、同時実行できるタスクにソース シーケンスをパーティション分割します。 クエリの並列化が安全ではない場合は、PLINQ はクエリを順次実行します。 PLINQ で、負荷が高くなる可能性がある並列アルゴリズムと負荷が低い順次アルゴリズムを選ぶ必要がある場合は、既定では順次アルゴリズムが選択されます。 並列アルゴリズムを選択するよう PLINQ に指示するには、 メソッドと 列挙型を使用します。 これは、テストと測定の結果、特定のクエリで並列化の方が速く実行されることが判明している場合に便利です。 詳細については、「[How to: Specify the Execution Mode in PLINQ (方法: PLINQ の実行モードを指定する)](../../../docs/standard/parallel-programming/how-to-specify-the-execution-mode-in-plinq.md)」を参照してください。 ## 並列化の次数 - 既定では、PLINQ は、すべてのプロセッサをホスト コンピューターで使用します。 メソッドを使用すると、指定されたプロセッサ数よりも多くのプロセッサを使用するよう、PLINQ に指示できます。 これは、コンピューター上で実行されるその他のプロセスが、一定の CPU 時間を確保できるようにする場合に便利です。 次のスニペットでは、クエリが最大で 2 つのプロセッサしか使用できないように制限します。 + 既定では、PLINQ はホスト コンピューター上のすべてのプロセッサを使用します。 メソッドを使用すると、指定されたプロセッサ数よりも多くのプロセッサを使用するよう、PLINQ に指示できます。 これは、コンピューター上で実行されるその他のプロセスが、一定の CPU 時間を確保できるようにする場合に便利です。 次のスニペットでは、クエリが最大で 2 つのプロセッサしか使用できないように制限します。 [!code-csharp[PLINQ#5](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#5)] [!code-vb[PLINQ#5](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinq2_vb.vb#5)] @@ -76,7 +80,7 @@ ms.lasthandoff: 11/21/2017 クエリが、ファイル I/O など計算主体ではない作業を大量に実行している場合は、マシンのコア数よりも大きい並列化の次数を指定することをお勧めします。 ## 順序ありの並列クエリと順序なしの並列クエリ - 一部のクエリでは、クエリ演算子は、ソース シーケンスの順序を保持する結果を生成する必要があります。 PLINQ で、この目的のための演算子。 異なりますです。 シーケンスが、並列で処理されますが、その結果をバッファーし並べ替えられます。 順序の維持には、余分な作業は、通常が行われるため、シーケンスを既定値よりも時間がかかる処理可能性があるシーケンス。 特定の順序ありの並列操作が、同じ操作の順次処理よりも高速であるかどうかは、さまざまな要因によって左右されます。 + 一部のクエリでは、クエリ演算子は、ソース シーケンスの順序を保持する結果を生成する必要があります。 そのために、PLINQ には 演算子が用意されています。 は、 とは異なります。 シーケンスは並列で処理されますが、その結果はバッファーに格納されて並べ替えられます。 通常、順序を保持するには追加の処理が必要となるため、 シーケンスの処理は、既定の シーケンスよりも遅くなることがあります。 特定の順序ありの並列操作が、同じ操作の順次処理よりも高速であるかどうかは、さまざまな要因によって左右されます。 次のコード例に、順序の維持を有効にする方法を示します。 @@ -89,10 +93,10 @@ ms.lasthandoff: 11/21/2017 一部の操作では、ソース データを順次提供する必要があります。 クエリ演算子は、必要に応じて、順次モードに自動的に切り替わります。 ユーザー定義のクエリ演算子と、順次実行を必要とするユーザー デリゲート向けに、PLINQ では メソッドを使用できます。 を使用すると、それ以降のクエリの演算子は、 が再度呼び出されるまで順次実行されます。 詳細については、「[How to: Combine Parallel and Sequential LINQ Queries (方法: 並列および順次の LINQ クエリを連結する)](../../../docs/standard/parallel-programming/how-to-combine-parallel-and-sequential-linq-queries.md)」を参照してください。 ## クエリ結果のマージのオプション - PLINQ クエリが並列実行される場合、`foreach` ループ (`For Each` の場合は [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)]) による消費、またはリストや配列への挿入を行うことができるよう、各ワーカー スレッドからの結果をメイン スレッドに再マージする必要があります。 結果をより迅速に生成する場合など、特定のマージ操作を指定すると便利なこともあります。 PLINQ をサポートしている、この目的で、メソッド、および列挙します。 詳細については、「[Merge Options in PLINQ (PLINQ のマージ オプション)](../../../docs/standard/parallel-programming/merge-options-in-plinq.md)」を参照してください。 + PLINQ クエリが並列実行される場合、`foreach` ループ (`For Each` の場合は [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)]) による消費、またはリストや配列への挿入を行うことができるよう、各ワーカー スレッドからの結果をメイン スレッドに再マージする必要があります。 結果をより迅速に生成する場合など、特定のマージ操作を指定すると便利なこともあります。 そのために、PLINQ では メソッドと 列挙型をサポートしています。 詳細については、「[Merge Options in PLINQ (PLINQ のマージ オプション)](../../../docs/standard/parallel-programming/merge-options-in-plinq.md)」を参照してください。 ## ForAll 演算子 - 順次[!INCLUDE[vbteclinq](../../../includes/vbteclinq-md.md)]クエリの実行を遅延すると、クエリが列挙されるまでのいずれか、 `foreach` (`For Each`で[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)]) のメソッドを呼び出すなどのループや 、またはです。 PLINQ では、`foreach` を使用してクエリを実行し、結果を反復処理することもできます。 ただし、`foreach` 自体は並列実行されないので、ループが実行されるスレッドに、すべての並列タスクの出力を再マージする必要があります。 PLINQ では、クエリ結果の最終的な順序を維持する必要がある場合や、結果を順次的に処理している場合は (たとえば、各要素に対して `foreach` を呼び出している場合など)、`Console.WriteLine` を使用できます。 高速化クエリの実行順序の維持が必要ないと、結果の処理できる自体を並列化時に使用して、 PLINQ クエリを実行するメソッド。 は、この最終的なマージ ステップを実行しません。 メソッドを使用するコード例を次に示します。 ここで が使用されるのは、項目を削除せずに、同時に複数スレッドの追加を行うために最適化されるためです。 + [!INCLUDE[vbteclinq](../../../includes/vbteclinq-md.md)] の順次クエリでは、`foreach` (`For Each` の場合は [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)]) ループで列挙されるか、 などのメソッドを呼び出すまで、クエリの実行は延期されます。 PLINQ では、`foreach` を使用してクエリを実行し、結果を反復処理することもできます。 ただし、`foreach` 自体は並列実行されないので、ループが実行されるスレッドに、すべての並列タスクの出力を再マージする必要があります。 PLINQ では、クエリ結果の最終的な順序を維持する必要がある場合や、結果を順次的に処理している場合は (たとえば、各要素に対して `foreach` を呼び出している場合など)、`Console.WriteLine` を使用できます。 順序の維持が必要ない場合や、結果の処理自体を並列化できる場合にクエリ実行を高速化するには、 メソッドで PLINQ クエリを実行します。 は、この最終的なマージ ステップを実行しません。 メソッドを使用するコード例を次に示します。 ここで が使用されるのは、項目を削除せずに、同時に複数スレッドの追加を行うために最適化されるためです。 [!code-csharp[PLINQ#4](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinq2_cs.cs#4)] [!code-vb[PLINQ#4](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinq2_vb.vb#4)] @@ -102,7 +106,7 @@ ms.lasthandoff: 11/21/2017 ![ForAll とForEach](../../../docs/standard/parallel-programming/media/vs-isvnt-allvseach.png "VS_ISVNT_ALLvsEACH") ## キャンセル - PLINQ は、[!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] のキャンセルの型に統合されています 詳細については、「[Cancellation in Managed Threads (マネージ スレッドのキャンセル)](../../../docs/standard/threading/cancellation-in-managed-threads.md)」を参照してください。そのため、順次的な LINQ to Objects クエリとは異なり、PLINQ クエリは取り消すことができます。 キャンセル可能な PLINQ クエリを作成するには、クエリで 演算子を使用し、引数として インスタンスを指定します。 ときに、トークンにプロパティが true の場合、PLINQ ことに注意してください、すべてのスレッドで処理を停止し、スロー、です。 + PLINQ は、[!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] のキャンセルの型に統合されています 詳細については、「[Cancellation in Managed Threads (マネージ スレッドのキャンセル)](../../../docs/standard/threading/cancellation-in-managed-threads.md)」を参照してください。そのため、順次的な LINQ to Objects クエリとは異なり、PLINQ クエリは取り消すことができます。 キャンセル可能な PLINQ クエリを作成するには、クエリで 演算子を使用し、引数として インスタンスを指定します。 トークンの プロパティが true に設定されていると、PLINQ はそれに気付き、すべてのスレッドの処理を中止して をスローします。 キャンセル トークンが設定された後も、PLINQ クエリが一部の要素の処理を継続する可能性があります。 @@ -126,6 +130,6 @@ ms.lasthandoff: 11/21/2017 ## PLINQ のパフォーマンスの測定 クエリは、多くの場合並列化できますが、並列クエリの設定に伴うオーバーヘッドは、並列化によって得られるパフォーマンスの利点よりも大きくなります。 クエリが大量の計算を実行しない場合、またはデータ ソースが小さい場合、PLINQ クエリは、順次的な LINQ to Objects クエリよりも低速になります。 Visual Studio Team Server の Parallel Performance Analyzer を使用し、さまざまなクエリのパフォーマンスの比較、処理のボトルネックの場所の特定、クエリが並行処理されているか順次処理されているかの確認を行うことができます。 詳細については、「[Concurrency Visualizer (同時実行ビジュアライザー)](/visualstudio/profiling/concurrency-visualizer)」と「[How to: Measure PLINQ Query Performance (方法: PLINQ クエリのパフォーマンスを測定する)](../../../docs/standard/parallel-programming/how-to-measure-plinq-query-performance.md)」を参照してください。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) [PLINQ での高速化について](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md) diff --git a/docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md b/docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md index d03eddf2416..1365e94aeb5 100644 --- a/docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md +++ b/docs/standard/parallel-programming/lambda-expressions-in-plinq-and-tpl.md @@ -16,32 +16,35 @@ helpviewer_keywords: - Action delegate, creating with lambda expression - lambda expressions, with Action and Func ms.assetid: 645b2c17-29d0-4ffa-8684-430743cc2f2d -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 79ab0f4427e0f37259f88cd3ec0762d1582481f1 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 364d23db41aac4733226189f7c8ae85d281b9887 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # PLINQ および TPL のラムダ式 -タスク並列ライブラリ (TPL) を含む多くの方法のいずれかをまたは入力パラメーターとしてデリゲートのファミリです。 これらのデリゲートを使用して、並列ループ、タスク、またはクエリにカスタムのプログラム ロジックを渡します。 TPL と PLINQ のコード例では、ラムダ式を使用して、インライン コード ブロックとしてこれらのデリゲートのインスタンスを作成します。 このトピックでは、Func および Action について簡単に紹介し、タスク並列ライブラリと PLINQ でラムダ式を使用する方法を示します。 +タスク並列ライブラリ (TPL) には、入力パラメーターとしてデリゲートの または ファミリのいずれかを受け取る多くのメソッドが含まれます。 これらのデリゲートを使用して、並列ループ、タスク、またはクエリにカスタムのプログラム ロジックを渡します。 TPL と PLINQ のコード例では、ラムダ式を使用して、インライン コード ブロックとしてこれらのデリゲートのインスタンスを作成します。 このトピックでは、Func および Action について簡単に紹介し、タスク並列ライブラリと PLINQ でラムダ式を使用する方法を示します。 **メモ** 一般的なデリゲートの詳細については、「[デリゲート](../../csharp/programming-guide/delegates/index.md)」と「[デリゲート](../../visual-basic/programming-guide/language-features/delegates/index.md)」を参照してください。 C# と [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] のラムダ式の詳細については、それぞれ「[ラムダ式](~/docs/csharp/programming-guide/statements-expressions-operators/lambda-expressions.md)」と「[ラムダ式](~/docs/visual-basic/programming-guide/language-features/procedures/lambda-expressions.md)」を参照してください。 ## Func デリゲート - `Func` デリゲートは、値を返すメソッドをカプセル化します。 Func シグネチャでは、末尾または最も右の型パラメーターが常に戻り値の型を指定します。 コンパイラ エラーの一般的な原因の 1 つは、2 つの入力パラメーターに渡すしようとする、以外の場合は実際にはこの型では 1 つの入力パラメーターだけです。 Framework クラス ライブラリの 17 バージョンを定義して`Func`: 、最大などを介してです。 + `Func` デリゲートは、値を返すメソッドをカプセル化します。 Func シグネチャでは、末尾または最も右の型パラメーターが常に戻り値の型を指定します。 コンパイラ エラーの一般的な原因の 1 つは、2 つの入力パラメーターを に渡そうとしていることです。この型は、実際には 1 つの入力パラメーターのみを受け取ります。 Framework クラス ライブラリでは、 から までの 17 バージョンの `Func` を定義します。 ## Action デリゲート - Aデリゲート メソッドをカプセル化 (でサブ[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)]) を返しますまたは、値を返さない[void](~/docs/csharp/language-reference/keywords/void.md)です。 Action 型シグネチャでは、型パラメーターは、入力パラメーターのみを表します。 Func のように、Framework クラス ライブラリでは、型パラメーターを持たないバージョンから 16 の型パラメーターを持つバージョンまでの、17 バージョンの Action が定義されています。 + デリゲートは、値を返さない、または [void](~/docs/csharp/language-reference/keywords/void.md) を返すメソッド ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では Sub) をカプセル化します。 Action 型シグネチャでは、型パラメーターは、入力パラメーターのみを表します。 Func のように、Framework クラス ライブラリでは、型パラメーターを持たないバージョンから 16 の型パラメーターを持つバージョンまでの、17 バージョンの Action が定義されています。 ## 例 - 次の例、メソッドは、ラムダ式を使用して Func および Action の両方のデリゲートを表現する方法を示しています。 + メソッドの次の例は、ラムダ式を使用して、Func および Action の両方のデリゲートを表す方法を示しています。 [!code-csharp[System.Threading.Tasks.Parallel#02](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.threading.tasks.parallel/cs/parallelforeach.cs#02)] [!code-vb[System.Threading.Tasks.Parallel#02](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.threading.tasks.parallel/vb/parallelforeach.vb#02)] -## 関連項目 +## 参照 [並列プログラミング](../../../docs/standard/parallel-programming/index.md) diff --git a/docs/standard/parallel-programming/merge-options-in-plinq.md b/docs/standard/parallel-programming/merge-options-in-plinq.md index c5e1537395d..5b51b9e26da 100644 --- a/docs/standard/parallel-programming/merge-options-in-plinq.md +++ b/docs/standard/parallel-programming/merge-options-in-plinq.md @@ -11,66 +11,70 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, merge options +helpviewer_keywords: +- PLINQ queries, merge options ms.assetid: e8f7be3b-88de-4f33-ab14-dc008e76c1ba -caps.latest.revision: "10" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: e9bf586c1805fc5b5f1cc5f96f4e6b08d80c199a -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4758046fef55af86754ecb38aa50c4ff832f54db +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # PLINQ のマージ オプション -クエリが実行するときに並列、PLINQ パーティションとしてソース シーケンス複数のスレッドで作業できるさまざまな部分に同時に、通常別々 のスレッドでできるようにします。 結果を 1 つのスレッドで使用する場合など、 `foreach` (`For Each`で[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)]) ループ、そのすべてのスレッドからの結果を 1 つのシーケンスにマージする必要があります。 PLINQ を実行する結合の種類は、クエリに存在する演算子によって異なります。 たとえば、結果に新しい注文を課す演算子では、すべてのスレッドからすべての要素がバッファーに格納する必要があります。 (これはでも、アプリケーションのユーザーの) かかるスレッドの観点から、顕著な期間の最初の結果を生成する前に完全にバッファー内のクエリ可能性があります実行されます。 その他の演算子では、既定は部分的にバッファーに格納します。これらは、バッチ処理の結果をもたらします。 1 つの演算子が既定ではバッファーされていません。 として生成されるすべての要素のすべてのスレッドからすぐにします。 +クエリが並列として実行される場合、PLINQ はソース シーケンスをパーティション分割し、複数のスレッドが同時に異なる部分 (通常は別個のスレッド) で動作できるようにします。 結果を 1 つのスレッドで、たとえば、`foreach` ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `For Each`) ループで使用する場合、すべてのスレッドからの結果を 1 つのシーケンスに再マージする必要があります。 PLINQ で実行されるマージの種類は、クエリに存在する演算子によって異なります。 たとえば、結果に新しい順序を適用する演算子は、すべてのスレッドのすべての要素をバッファリングする必要があります。 消費スレッド (アプリケーション ユーザーのものでもある) 観点から、完全にバッファリングされたクエリは、最初の結果が生成される前に非常に長い期間実行される可能性があります。 既定では、その他の演算子は部分的にバッファリングされ、結果はバッチ単位で生成されます。 既定では、1 つの演算子 がバッファリングされることはありません。 すべてのスレッドのすべての要素はすぐに生成されます。 - 使用して、メソッドを次の例で示すように提供できるヒント PLINQ を実行する結合の種類を示すです。 + 以下の例に示すように、 メソッドを使用することで、PLINQ に、実行するマージの種類を示すヒントを提供できます。 [!code-csharp[PLINQ#26](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#26)] [!code-vb[PLINQ#26](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinq2_vb.vb#26)] - 完了の例では、次を参照してください。[する方法: PLINQ のマージ オプションの指定](../../../docs/standard/parallel-programming/how-to-specify-merge-options-in-plinq.md)です。 + 完全な例については、「[方法: PLINQ のマージ オプションを指定する](../../../docs/standard/parallel-programming/how-to-specify-merge-options-in-plinq.md)」を参照してください。 - 特定のクエリで要求されたオプションがサポートされていない場合、オプションだけ無視されます。 ほとんどの場合、PLINQ クエリのマージ オプションを指定するはありません。 ただし、場合によっては、テストと、既定以外のモードでクエリの最適な実行測定によって検索可能性があります。 このオプションの一般的な用途は、応答性の高いユーザー インターフェイスを提供するためにその結果をストリーミングにチャンク結合演算子を強制的にです。 + 特定のクエリで要求されたオプションをサポートできない場合は、オプションが無視されるだけです。 ほとんどの場合、PLINQ クエリのマージ オプションを指定する必要はありません。 ただし、場合によっては、テストや測定を行うことで、クエリが既定以外のモードで最適に実行されることがわかることもあります。 このオプションは、より応答性の高いユーザー インターフェイスを提供するために、チャンク マージ演算子で結果を強制的にストリーミングする場合に一般的に使用されます。 ## ParallelMergeOptions - 列挙には、次のオプション指定する、図形はサポートされているクエリ、結果が 1 つのスレッドで使用される場合に、クエリの最終的な出力を生成する方法にはが含まれています。 + 列挙には、サポートされるクエリ形状について、結果が 1 つのスレッドで使用されるときにクエリの最終出力がどのように生成されるかを指定する以下のオプションが含まれます。 - `Not Buffered` - オプションの設定により、生成されるとすぐに、各スレッドから返される各処理された要素。 この動作は、"streaming"出力に似ています。 場合、演算子は、クエリ内に存在`NotBuffered`ソース要素の順序が保持されます。 `NotBuffered`利用可能なとすぐに結果を生成を開始するには、および、結果がある可能性がありますすべてを生成するために時間の合計は、他のマージ オプションのいずれかを使用してより長くします。 + オプションを指定すると、処理された各要素は、生成されるとすぐに各スレッドから返されます。 この動作は、出力の "ストリーミング" に似ています。 演算子がクエリに存在する場合、`NotBuffered` ではソース要素の順序が保持されます。 `NotBuffered` は使用可能になるとすぐに結果を生成し始めますが、それでも、すべての結果を生成するための合計時間は、他のマージ オプションのいずれかを使用する場合より長くなることがあります。 - `Auto Buffered` - オプションの設定により、バッファーに要素を収集し、バッファーの内容がかかるスレッドに一度にすべてを定期的に生成するクエリをします。 これは「ストリーミング」の動作を使用する代わりに「チャンク」でソース データを応答に似ています`NotBuffered`です。 `AutoBuffered`も長い時間がかかる`NotBuffered`がかかるスレッドでの最初の要素を使用できるようにします。 バッファーのサイズ、および正確な生成動作は構成できないと、クエリに関連するさまざまな要因によって異なる場合があります。 + オプションを指定すると、クエリで要素がバッファーに収集され、定期的にバッファー コンテンツがすべて一度に消費スレッドに譲渡されます。 これは、`NotBuffered` の "ストリーミング" 動作を使用する代わりに、"チャンク" 単位でソース データを生成する動作に似ています。 消費スレッドで最初の要素が使用できるようになるまで、`NotBuffered` よりも `AutoBuffered` のほうが長くかかる場合があります。 バッファーのサイズと正確な生成動作を構成することはできず、これらはクエリに関するさまざまな要因によって異なる場合があります。 - `FullyBuffered` - オプションの設定により、クエリの出力、全体に任意の要素が生成する前にバッファーに格納します。 このオプションを使用する場合、長い時間がかかる最初の要素がかかるスレッドで使用できますが、完全な結果を生成する可能性がある前に、他のオプションを使用して、高速です。 + オプションを指定すると、要素が生成される前にクエリ全体の出力がバッファリングされます。 このオプションを使用すると、最初の要素が消費スレッドで使用可能になるまで時間がかかる場合がありますが、それでも他のオプションを使用する場合よりも速く完全な結果が生成される可能性があります。 ## マージ オプションをサポートするクエリ演算子 - 次の表では、指定された制限に従い、すべてのマージ オプション モードをサポートする演算子が一覧表示します。 + 次の表に、指定された制約に従って、すべてのマージ オプション モードをサポートする演算子をリストします。 |演算子|制約| |--------------|------------------| ||なし| ||なし| -||配列またはリスト ソースがのみ非順次のクエリです。| +||配列またはリスト ソースのみがある順序付けされていないクエリ。| ||なし| ||なし| -||配列またはリスト ソースがのみ非順次のクエリです。| +||配列またはリスト ソースのみがある順序付けされていないクエリ。| ||なし| ||なし| ||なし| ||なし| ||なし| - 他のすべての PLINQ クエリ演算子は、ユーザー指定のマージ オプションを無視する場合があります。 一部のクエリ演算子、たとえば、をすべて生成および順序を変更するまで、すべての要素を生成できません。 したがって、などの演算子が含まれているクエリで使用マージの動作は適用されませんまでクエリでその演算子には、その結果によって生成された後にします。 + 他のすべての PLINQ クエリ演算子では、ユーザー指定のマージ オプションが無視される場合があります。 一部のクエリ演算子 ( など) では、すべて生成されて並べ替えられるまで要素を譲渡できません。 したがって、 などの演算子も含むクエリで を使用すると、演算子でその結果が生成されるまでクエリではマージ動作が適用されません。 - マージ オプションを処理するいくつかの演算子の機能は、ソース シーケンスの種類によって異なります。 かどうかと、演算子がクエリ内で既に使用されています。 常に; すぐにその要素になります。 常に; として生成される前に、リスト全体を並べ替えるにする必要があります。 + マージ オプションを処理するいくつかの演算子の機能は、ソース シーケンスの種類と、 演算子がクエリで既に使用されているかどうかによって異なります。 は常に であり、その要素をすぐに生成します。 は常に であり、生成の前にリスト全体を並べ替える必要があります。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) [方法: PLINQ のマージ オプションを指定する](../../../docs/standard/parallel-programming/how-to-specify-merge-options-in-plinq.md) diff --git a/docs/standard/parallel-programming/order-preservation-in-plinq.md b/docs/standard/parallel-programming/order-preservation-in-plinq.md index 005719493ea..5c2e796402e 100644 --- a/docs/standard/parallel-programming/order-preservation-in-plinq.md +++ b/docs/standard/parallel-programming/order-preservation-in-plinq.md @@ -11,17 +11,21 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, order preservation +helpviewer_keywords: +- PLINQ queries, order preservation ms.assetid: 10d202bc-19e1-4b5c-bbf1-9a977322a9ca -caps.latest.revision: "19" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 060459cf8f408e40ddc394fbcda6a022ec6379de -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 164dce7c58e1ce44972e0e390e4f0bf2be8de548 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # PLINQ における順序維持 PLINQ では、正確性を維持しながらパフォーマンスを最大にすることが重要です。 クエリをできるだけ速く実行する一方で、正確な結果を生成する必要があります。 正確性のために、ソース シーケンスの順序の維持が必要な場合がありますが、順序付けには負荷がかかります。 したがって、既定では、PLINQ はソース シーケンスの順序を維持しません。 この点で、PLINQ は [!INCLUDE[vbtecdlinq](../../../includes/vbtecdlinq-md.md)] と似ていますが、順序を維持する LINQ to Objects とは異なります。 @@ -101,16 +105,16 @@ PLINQ では、正確性を維持しながらパフォーマンスを最大に ||シーケンスを並べ替え|新規に順序付けられたセクションを開始| ||シーケンスを並べ替え|新規に順序付けられたセクションを開始| ||該当なし ( の既定と同じ)|利用不可| -||該当なし (既定と同じ)|利用不可| +||該当なし ( の既定と同じ)|利用不可| ||逆方向|処理を行わない| ||順序ありの結果|順序なしの結果| -|(インデックス付き)|順序ありの結果|順序なしの結果| +| (インデックス付き)|順序ありの結果|順序なしの結果| ||順序ありの結果|順序なしの結果| -|(インデックス付き)|順序ありの結果|順序なしの結果| +| (インデックス付き)|順序ありの結果|順序なしの結果| ||順序ありの比較|順序なしの比較| ||利用不可|利用不可| ||利用不可|利用不可| -||最初にスキップ *n* 要素|いずれかでスキップ *n* 要素| +||最初の *n* 要素をスキップ|任意の *n* 要素をスキップ| ||順序ありの結果|非確定。 現在の任意の順序で SkipWhile を実行| ||非結合演算子または非可換演算子の場合は非確定の出力|非結合演算子または非可換演算子の場合は非確定の出力| ||最初の `n` 要素を取得|`n` 要素を取得| @@ -123,11 +127,11 @@ PLINQ では、正確性を維持しながらパフォーマンスを最大に ||順序ありの結果|順序なしの結果| ||順序ありの結果|順序なしの結果| ||順序ありの結果|順序なしの結果| -|(インデックス付き)|順序ありの結果|順序なしの結果| +| (インデックス付き)|順序ありの結果|順序なしの結果| ||順序ありの結果|順序なしの結果| 順序なしの結果はアクティブにシャッフルされるわけではありません。適用される特別な順序ロジックがないだけです。 順序なしのクエリでソース シーケンスの順序が保持される場合もあります。 インデックス付きの Select 演算子を使用するクエリの場合、PLINQ ではインデックスが増加する順に出力要素が出力されることは保証しますが、どのインデックスがどの要素に割り当てられるかについては一切保証しません。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) [並列プログラミング](../../../docs/standard/parallel-programming/index.md) diff --git a/docs/standard/parallel-programming/parallel-linq-plinq.md b/docs/standard/parallel-programming/parallel-linq-plinq.md index 9e4d8893740..4155de8428c 100644 --- a/docs/standard/parallel-programming/parallel-linq-plinq.md +++ b/docs/standard/parallel-programming/parallel-linq-plinq.md @@ -8,20 +8,24 @@ ms.suite: ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article -helpviewer_keywords: PLINQ, overview +helpviewer_keywords: +- PLINQ, overview ms.assetid: 3d4d0cd3-bde4-490b-99e7-f4e41be96455 -caps.latest.revision: "17" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: c0028d3d8c30bbc7f0592a4462ca1eeb80c8b1f9 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 94eeeda4666a4e6c1cb8729d6563ffcc4aa479c4 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # Parallel LINQ (PLINQ) -Parallel LINQ (PLINQ) は、LINQ to Objects の並列実装です。 PLINQ LINQ 標準クエリ演算子の完全なセットを実装するための拡張メソッドとして、名前空間での並列操作の追加の演算子を持つとします。 PLINQ は、LINQ 構文の単純さと読みやすさに加え、並列プログラミングのパワーを兼ね備えています。 タスク並列ライブラリを対象とするコードと同じように、PLINQ クエリの同時実行の程度は、ホスト コンピューターの能力に基づいて調整されます。 +Parallel LINQ (PLINQ) は、LINQ to Objects の並列実装です。 PLINQ は、LINQ 標準クエリ演算子の完全なセットを 名前空間の拡張メソッドとして実装し、並列操作用の追加演算子も備えています。 PLINQ は、LINQ 構文の単純さと読みやすさに加え、並列プログラミングのパワーを兼ね備えています。 タスク並列ライブラリを対象とするコードと同じように、PLINQ クエリの同時実行の程度は、ホスト コンピューターの能力に基づいて調整されます。 多くのシナリオで、PLINQ は、ホスト コンピューターで使用可能なすべてのコアをより効率的に使用することで、LINQ to Objects クエリの速度を大幅に上昇させることができます。 このパフォーマンスの向上によって、デスクトップに高パフォーマンスの演算能力がもたらされます。 @@ -56,7 +60,7 @@ Parallel LINQ (PLINQ) は、LINQ to Objects の並列実装です。 PLINQ LINQ [PLINQ データのサンプル](../../../docs/standard/parallel-programming/plinq-data-sample.md) -## 関連項目 +## 参照 [並列プログラミング](../../../docs/standard/parallel-programming/index.md) [統合言語クエリ (LINQ)](http://msdn.microsoft.com/library/a73c4aec-5d15-4e98-b962-1274021ea93d) diff --git a/docs/standard/parallel-programming/plinq-data-sample.md b/docs/standard/parallel-programming/plinq-data-sample.md index 1ca6dc46fc0..328c5c50dcc 100644 --- a/docs/standard/parallel-programming/plinq-data-sample.md +++ b/docs/standard/parallel-programming/plinq-data-sample.md @@ -11,35 +11,39 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, sample data +helpviewer_keywords: +- PLINQ queries, sample data ms.assetid: 4fccbb35-eaa5-44e9-a252-a5c3d4bc7604 -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: f0e94fec1d1390c68808c06a8ff23f52556c6f74 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4b1aaa6f3027283ff20088d6122f9b4ec4bb1111 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # PLINQ データのサンプル -このサンプルには、顧客、製品、Orders、Order Details のメモリ内コレクションに変換する方法と共に、.csv 形式でデータ例にはが含まれています。 PLINQ でさらに試すには、その他のトピックのコード例をこのトピックのコードに貼り付けるし、呼び出すことからすることができます、`Main`メソッドです。 PLINQ クエリでこのデータを使用することもできます。 +このサンプルには、.csv 形式のデータ例と、データを顧客、製品、注文、その他の詳細のメモリ内コレクションに変換するメソッドが含まれています。 PLINQ でさらに試す場合は、他の特定のトピックのコード例をこのトピックのコードに貼り付けて、`Main` メソッドから呼び出すことができます。 また、独自の PLINQ クエリでこのデータを使用することもできます。 - データは、Northwind データベースのサブセットを表します。 50 台の顧客レコードは、含まれる、すべてではなくフィールドです。 注文とすべての顧客に対応する Order_Detail データから行のサブセットが含まれます。 すべての製品が含まれます。 + データは、Northwind データベースのサブセットを表します。 50 の顧客レコードが含まれていますが、すべてのフィールドが含まれているわけではありません。 すべての顧客の注文および対応する Order_Detail データからの行のサブセットが含まれます。 製品はすべて含まれます。 > [!NOTE] -> データ セットが、PLINQ はより高速 LINQ to Objects を含むクエリの基本を示すために十分な大きさ`where`と`select`句。 このような小さいデータセットで速度が向上を確認するには、データ セット内のすべての要素に対する計算コストが高い操作を含むクエリを使用します。 +> データ セットは、PLINQ が基本的な `where` 句と `select` 句のみを含むクエリの LINQ to Objects よりも高速であることを示すには十分な大きさではありません。 このような小さいデータ セットでの速度向上を確認するには、データ セットのすべての要素に対して負荷の大きい操作を含むクエリを使用します。 ### このサンプルをセットアップするには -1. Visual Basic または Visual c# コンソール アプリケーション プロジェクトを作成します。 +1. Visual Basic または Visual C# コンソール アプリケーション プロジェクトを作成します。 -2. Module1.vb または Program.cs の内容を交換して、これらの手順を次のコードを使用してください。 +2. これらの手順の次に示すコードを使用して、Module1.vb または Program.cs のコンテンツを置き換えます。 -3. **[プロジェクト]** メニューの **[新しい項目の追加]**をクリックします。 選択**テキスト ファイル** をクリックし、 **OK**です。 このトピックのデータをコピーし、新しいテキスト ファイルに貼り付けます。 **ファイル** メニューのをクリックして**保存**ファイル「Plinqdata.csv、名前、および、それをソース コード ファイルを含むフォルダーに保存します。 +3. **[プロジェクト]** メニューの **[新しい項目の追加]**をクリックします。 **[テキスト ファイル]** を選択してから **[OK]** をクリックします。 このトピックのデータをコピーし、新しいテキスト ファイルに貼り付けます。 **[ファイル]** メニューで **[保存]** をクリックし、ファイルに Plinqdata.csv という名前を付けてから、ソース コード ファイルを含むフォルダーに保存します。 -4. F5 キーを押して、プロジェクトがビルドされ、正常に実行されることを確認してください。 次の出力がコンソール ウィンドウに表示されます。 +4. F5 キーを押し、プロジェクトが正常にビルドされ、実行されることを確認します。 次の出力がコンソール ウィンドウに表示されます。 ``` Customer count: 50 @@ -868,5 +872,5 @@ PRODUCTS END PRODUCTS ``` -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/potential-pitfalls-in-data-and-task-parallelism.md b/docs/standard/parallel-programming/potential-pitfalls-in-data-and-task-parallelism.md index 80e9e64c191..17b3f649a36 100644 --- a/docs/standard/parallel-programming/potential-pitfalls-in-data-and-task-parallelism.md +++ b/docs/standard/parallel-programming/potential-pitfalls-in-data-and-task-parallelism.md @@ -11,26 +11,30 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: parallel programming, pitfalls +helpviewer_keywords: +- parallel programming, pitfalls ms.assetid: 1e357177-e699-4b8f-9e49-56d3513ed128 -caps.latest.revision: "14" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 54fd201bd4eaef607f8917ea693876aec7fa2923 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2f575e8bdf06490eb0e5eba0ac07fe23787aa18d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # データとタスクの並列化における注意点 -多くの場合、通常順次ループ経由で大幅なパフォーマンス向上を提供することができます。 ただし、ループを並列化すると複雑になるため、逐次コードでは一般的でない、またはまったく発生しない問題の原因になる可能性があります。 このトピックでは、並列ループを記述するときに回避すべきプラクティスをいくつか説明します。 + および を使用すると、多くの場合、通常の順次ループよりもパフォーマンスが大幅に向上します。 ただし、ループを並列化すると複雑になるため、逐次コードでは一般的でない、またはまったく発生しない問題の原因になる可能性があります。 このトピックでは、並列ループを記述するときに回避すべきプラクティスをいくつか説明します。 ## 並列処理が常に高速であると思い込まない 並列ループは、場合によっては対応する順次処理よりも時間がかかる可能性があります。 基本的な経験則では、イテレーションが少なく、高速ユーザー デリゲートを使用する並列ループの速度が大幅に向上することはほとんどありません。 ただし、パフォーマンスには多くの要因が関係するため、常に実際の結果を測定することをお勧めします。 ## 共有メモリの位置への書き込みを回避する - 逐次コードでは、静的変数またはクラス フィールドから読み取ることや、これらの場所に書き込むことはよくあります。 ただし、複数のスレッドからこのような変数に同時にアクセスしているときは、著しい競合状態になる場合がよくあります。 ロックを使用して変数へのアクセスを同期できる場合でも、同期のコストでパフォーマンスが低下する可能性があります。 そのため、並列ループにおける共有状態へのアクセスは、可能な限り回避するか、少なくとも制限することをお勧めします。 これを行う最適な方法は、のオーバー ロードを使用するを使用する、ループの実行中のスレッド ローカル状態を格納する変数。 詳細については、「[How to: Write a Parallel.For Loop with Thread-Local Variables (方法: スレッド ローカル変数を使用する Parallel.For ループを記述する)](../../../docs/standard/parallel-programming/how-to-write-a-parallel-for-loop-with-thread-local-variables.md)」と「[How to: Write a Parallel.ForEach Loop with Thread-Local Variables (方法: スレッド ローカル変数を使用する Parallel.ForEach ループを記述する)](../../../docs/standard/parallel-programming/how-to-write-a-parallel-foreach-loop-with-thread-local-variables.md)」を参照してください。 + 逐次コードでは、静的変数またはクラス フィールドから読み取ることや、これらの場所に書き込むことはよくあります。 ただし、複数のスレッドからこのような変数に同時にアクセスしているときは、著しい競合状態になる場合がよくあります。 ロックを使用して変数へのアクセスを同期できる場合でも、同期のコストでパフォーマンスが低下する可能性があります。 そのため、並列ループにおける共有状態へのアクセスは、可能な限り回避するか、少なくとも制限することをお勧めします。 この場合の最適な方法は、ループの実行中に 変数を使用してスレッド ローカルの状態を格納する、 および のオーバーロードを使用することです。 詳細については、「[How to: Write a Parallel.For Loop with Thread-Local Variables (方法: スレッド ローカル変数を使用する Parallel.For ループを記述する)](../../../docs/standard/parallel-programming/how-to-write-a-parallel-for-loop-with-thread-local-variables.md)」と「[How to: Write a Parallel.ForEach Loop with Thread-Local Variables (方法: スレッド ローカル変数を使用する Parallel.ForEach ループを記述する)](../../../docs/standard/parallel-programming/how-to-write-a-parallel-foreach-loop-with-thread-local-variables.md)」を参照してください。 ## 過剰な並列化を回避する 並列ループを使用することで、ソース コレクションのパーティション分割とワーカー スレッドの同期によるオーバヘッド コストが発生します。 並列化の利点は、コンピューター上のプロセッサ数によってさらに制限されます。 1 つのプロセッサで複数の計算主体のスレッドを実行しても、高速化は実現しません。 そのため、ループを過剰に並列処理しないように注意する必要があります。 @@ -46,7 +50,7 @@ ms.lasthandoff: 11/21/2017 どの場合も、最適なクエリの形式を決定する最善の方法は、テストおよび測定することです。 ## スレッド セーフでないメソッドの呼び出しを回避する - 並列ループからスレッド セーフでないインスタンス メソッドに書き込むと、プログラムで検出されない可能性のあるデータ破損が起こる可能性があります。 例外が発生する可能性もあります。 次の例では、複数のスレッドとする呼び出しを試みると、メソッド、クラスによってサポートされていない、同時にします。 + 並列ループからスレッド セーフでないインスタンス メソッドに書き込むと、プログラムで検出されない可能性のあるデータ破損が起こる可能性があります。 例外が発生する可能性もあります。 次の例では、複数のスレッドが、クラスでサポートされていない メソッドの同時呼び出しを試みます。 [!code-csharp[TPL_Pitfalls#04](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_pitfalls/cs/pitfalls.cs#04)] [!code-vb[TPL_Pitfalls#04](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_pitfalls/vb/pitfalls_vb.vb#04)] @@ -55,7 +59,7 @@ ms.lasthandoff: 11/21/2017 .NET Framework のほとんどの静的メソッドはスレッド セーフであり、複数のスレッドから同時に呼び出すことができます。 ただし、このような場合でも、関連する同期によっては、クエリの処理速度が大幅に低下する可能性があります。 > [!NOTE] -> テストできますこの自分でいくつかの呼び出しを挿入することでクエリにします。 このメソッドは、ドキュメントの例でデモのために使用されていますが、必要がない限り並列ループでは使用しないでください。 +> これは、クエリに の呼び出しをいくつか挿入することで自分でテストできます。 このメソッドは、ドキュメントの例でデモのために使用されていますが、必要がない限り並列ループでは使用しないでください。 ## スレッド アフィニティの問題に注意する シングル スレッド アパートメント (STA) コンポーネント向けの COM 相互運用性、Windows フォーム、Windows Presentation Foundation (WPF) などの一部のテクノロジでは、特定のスレッド上で実行するコードを必要とするスレッド アフィニティが制限される場合があります。 たとえば、Windows フォームと WPF では、コントロールへのアクセスは、そのコントロールが作成されたスレッド上でしか行うことができません。 つまり、たとえば、UI スレッドのみで処理をスケジュールするようにスレッド スケジューラを構成していない限り、並列ループからはリスト コントロールを更新できません。 詳細については、「[How to: Schedule Work on the User Interface (UI) Thread (方法: ユーザー インターフェイス (UI) スレッドで作業をスケジュールする)](http://msdn.microsoft.com/library/32a846a5-d628-4933-907b-4888ff72c663)」を参照してください。 @@ -64,7 +68,7 @@ ms.lasthandoff: 11/21/2017 状況によっては、タスク並列ライブラリでタスクをインライン展開します。これは、現在実行中のスレッドでタスクが実行されることを意味します (詳細については、[タスク スケジューラ](http://msdn.microsoft.com/library/638f8ea5-21db-47a2-a934-86e1e961bf65)に関するページを参照してください)。場合によっては、このパフォーマンスの最適化によって、デッドロックが発生する可能性があります。 たとえば、2 つのタスクで同じデリゲート コードを実行していて、そのデリゲート コードは、イベントの発生時に通知し、もう 1 つのタスクが通知するまで待機するとします。 この場合、2 番目のタスクが 1 番目のタスクと同じスレッド情にインライン展開され、1 番目のタスクが待機状態になると、2 番目のタスクではそのイベントを通知できなくなります。 このような状況を回避するために、待機操作のタイムアウトを指定するか、明示的なスレッド コンストラクターを使用して、1 つのタスクがもう 1 つのタスクをブロックしないようにすることができます。 ## ForEach、For および ForAll のイテレーションが必ず並列実行されているとは限らない - その個々 の繰り返しに留意することが重要なまたは月のループが並列で実行する必要はありません。 そのため、イテレーションの並列実行の正確性、または特定の順序でのイテレーションの実行の正確性に依存するコードを記述しないでください。 たとえば、次のコードはデッドロックが起こる可能性があります。 + 、または の各ループにおける個々の反復処理が必ずしも並列実行されるとは限らないことに注意してください。 そのため、イテレーションの並列実行の正確性、または特定の順序でのイテレーションの実行の正確性に依存するコードを記述しないでください。 たとえば、次のコードはデッドロックが起こる可能性があります。 [!code-csharp[TPL_Pitfalls#01](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_pitfalls/cs/pitfalls.cs#01)] [!code-vb[TPL_Pitfalls#01](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_pitfalls/vb/pitfalls_vb.vb#01)] @@ -76,7 +80,7 @@ ms.lasthandoff: 11/21/2017 ## UI スレッドでの並列ループの実行を回避する アプリケーションのユーザー インターフェイス (UI) では、その応答性を維持することが重要です。 並列処理が必要になる量の処理が 1 つの操作で行われる場合、UI スレッドでその操作を実行しない方がよい可能性があります。 代わりに、バック グラウンド スレッドで実行されるように、その操作をオフロードしてください。 たとえば、特定のデータを計算し、その結果を UI コントロールに表示するために、並列ループを使用する必要がある場合は、UI イベント ハンドラーで直接実行するではなく、タスクのインスタンス内でループを実行することを検討してください。 中心的な計算が完了したときにのみ、UI 更新を UI スレッドにマーシャ リングするようにします。 - UI スレッドで並列ループを実行する場合は、そのループ内から UI コントロールを更新しないように注意してください。 UI スレッドで実行されている並列ループ内から UI コントロールを更新しようとすると、UI 更新の呼び出し方法によっては、状態の破損、例外、更新の遅延、場合によってはデッドロックまで発生する可能性があります。 次の例では、並列ループが実行されている UI スレッドは、すべてのイテレーションが完了するまでループによってブロックされます。 ただし、反復ループで実行される場合、バック グラウンド スレッド (として行うことができます)、Invoke 呼び出しによって、UI スレッドと処理するには、そのメッセージを待っているブロックを送信するメッセージ。 UI スレッドがブロックを実行しているため、メッセージを処理しないことができます、および UI スレッドのデッドロック。 + UI スレッドで並列ループを実行する場合は、そのループ内から UI コントロールを更新しないように注意してください。 UI スレッドで実行されている並列ループ内から UI コントロールを更新しようとすると、UI 更新の呼び出し方法によっては、状態の破損、例外、更新の遅延、場合によってはデッドロックまで発生する可能性があります。 次の例では、並列ループが実行されている UI スレッドは、すべてのイテレーションが完了するまでループによってブロックされます。 ただし、このループのイテレーションがバックグラウンド スレッドで実行されると ( と同じ処理を行う)、Invoke の呼び出しによって UI スレッドにメッセージが送信され、そのメッセージが処理されるのを待機することになります。 を実行している UI スレッドがブロックされるため、メッセージが処理されなくなり、UI スレッドでデッドロックが発生します。 [!code-csharp[TPL_Pitfalls#02](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_pitfalls/cs/pitfalls.cs#02)] [!code-vb[TPL_Pitfalls#02](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_pitfalls/vb/pitfalls_vb.vb#02)] @@ -86,7 +90,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[TPL_Pitfalls#03](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_pitfalls/cs/pitfalls.cs#03)] [!code-vb[TPL_Pitfalls#03](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_pitfalls/vb/pitfalls_vb.vb#03)] -## 関連項目 +## 参照 [並列プログラミング](../../../docs/standard/parallel-programming/index.md) [PLINQ の非利便性](../../../docs/standard/parallel-programming/potential-pitfalls-with-plinq.md) [Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4 (並列プログラミングのパターン: .NET Framework 4 での並列パターンの理解と適用)](http://go.microsoft.com/fwlink/?LinkID=185142) diff --git a/docs/standard/parallel-programming/potential-pitfalls-with-plinq.md b/docs/standard/parallel-programming/potential-pitfalls-with-plinq.md index f1a2f54716f..0fddf167dd0 100644 --- a/docs/standard/parallel-programming/potential-pitfalls-with-plinq.md +++ b/docs/standard/parallel-programming/potential-pitfalls-with-plinq.md @@ -11,47 +11,51 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, pitfalls +helpviewer_keywords: +- PLINQ queries, pitfalls ms.assetid: 75a38b55-4bc4-488a-87d5-89dbdbdc76a2 -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: f7c971d2c039e6441669108e966eba472819fde5 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 972734b1275c82141c9057398268d068f5eaf3e6 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # PLINQ の非利便性 -多くの場合、PLINQ は、順次の LINQ to Objects クエリ経由で大幅なパフォーマンス向上を提供できます。 ただし、クエリの実行を並列化には、問題が発生するの順次のコードに、一般的ではないまたはめったにない可能性がある複雑さが導入されています。 このトピックでは、PLINQ クエリを記述するときを防ぐためのいくつかの事項を示します。 +PLINQ を使用すると、多くの場合、連続した LINQ to Objects クエリのパフォーマンスが大幅に向上します。 ただし、クエリの実行を並列化すると、複雑性が増すため、シーケンシャルなコードにおいて一般的でない問題、またはめったにない問題を引き起こす場合があります。 このトピックでは、PLINQ クエリを記述するときに回避すべき点について示します。 ## 並列処理が常に高速であると思い込まない - 並列処理こともありますが、PLINQ クエリを同等のオブジェクトに、LINQ より時間がかかります実行発生します。 基本的な経験則は、いくつかのソース要素とユーザーの簡易デリゲートを持つクエリがないことにより高速化する可能性がはるかです。 ただし、パフォーマンスには、多くの要因が関係する、ため PLINQ を使用するかどうかを決定する前に、実際の結果を測定することお勧めします。 詳細については、「[Understanding Speedup in PLINQ (PLINQ での高速化について)](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 + 並列化することで、PLINQ クエリの実行速度が同等の LINQ to Objects より遅くなる場合があります。 基本的な経験則では、ソース要素が少なく、高速ユーザー デリゲートを使用するクエリの速度が大幅に向上することはほとんどありません。 ただし、パフォーマンスには多くの要因が関係するため、実際の結果を測定してから、PLINQ を使用するかどうかを決定することをお勧めします。 詳細については、「[Understanding Speedup in PLINQ (PLINQ での高速化について)](../../../docs/standard/parallel-programming/understanding-speedup-in-plinq.md)」を参照してください。 ## 共有メモリの位置への書き込みを回避する - 逐次コードでは、静的変数またはクラス フィールドから読み取ることや、これらの場所に書き込むことはよくあります。 ただし、複数のスレッドからこのような変数に同時にアクセスしているときは、著しい競合状態になる場合がよくあります。 ロックを使用して変数へのアクセスを同期できる場合でも、同期のコストでパフォーマンスが低下する可能性があります。 したがって、することを避けるため、または少なくとも制限可能な限り PLINQ クエリ内の共有状態へのアクセスをお勧めします。 + 逐次コードでは、静的変数またはクラス フィールドから読み取ることや、これらの場所に書き込むことはよくあります。 ただし、複数のスレッドからこのような変数に同時にアクセスしているときは、著しい競合状態になる場合がよくあります。 ロックを使用して変数へのアクセスを同期できる場合でも、同期のコストでパフォーマンスが低下する可能性があります。 このため、PLINQ クエリにおける共有状態へのアクセスは、できるだけ回避するか、少なくとも制限することをお勧めします。 ## 過剰な並列化を回避する - 使用して、`AsParallel`ソース コレクションを分割して、ワーカー スレッドの同期のオーバーヘッド コストが発生する演算子です。 並列化の利点は、コンピューター上のプロセッサ数によってさらに制限されます。 1 つのプロセッサで複数の計算主体のスレッドを実行しても、高速化は実現しません。 したがって、過剰なクエリの並列化しないように注意する必要があります。 + `AsParallel` を使用することで、ソース コレクションのパーティション分割とワーカー スレッドの同期によるオーバーヘッド コストが発生します。 並列化の利点は、コンピューター上のプロセッサ数によってさらに制限されます。 1 つのプロセッサで複数の計算主体のスレッドを実行しても、高速化は実現しません。 そのため、クエリを過剰に並列処理しないように注意する必要があります。 - 最も一般的なシナリオでは、次のスニペットに示すように、入れ子になったクエリではどの過剰な並列化が発生することができます。 + 過剰な並列化が発生する可能性が特に高い一般的な状況は、次のスニペットで示すように、入れ子になったクエリの場合です。 [!code-csharp[PLINQ#20](../../../samples/snippets/csharp/VS_Snippets_Misc/plinq/cs/plinqsamples.cs#20)] [!code-vb[PLINQ#20](../../../samples/snippets/visualbasic/VS_Snippets_Misc/plinq/vb/plinq2_vb.vb#20)] - ここを次の条件の 1 つ以上を適用しない限り、外部データ ソース (顧客) だけを並列化することをお勧めします。 + この場合、次の条件のうち 1 つ以上該当しない限り、外側のデータ ソース (customers) のみを並列化することをお勧めします。 -- 内部データ ソース (cust です。注文) は非常に長い呼ばれます。 +- 内部データ ソース (cust.Orders) が非常に長い。 - 各順序で高負荷の計算を実行している (この例に示す操作の負荷は大きくありません)。 - 対象システムに、`cust.Orders` でクエリを並列化することで生成されるスレッドの数を十分に処理できるプロセッサが存在している。 - どの場合も、最適なクエリの形式を決定する最善の方法は、テストおよび測定することです。 詳細については、次を参照してください。[する方法: PLINQ クエリのパフォーマンスを測定](../../../docs/standard/parallel-programming/how-to-measure-plinq-query-performance.md)です。 + どの場合も、最適なクエリの形式を決定する最善の方法は、テストおよび測定することです。 詳細については、「[方法: PLINQ クエリのパフォーマンスを測定する](../../../docs/standard/parallel-programming/how-to-measure-plinq-query-performance.md)」を参照してください。 ## スレッド セーフでないメソッドの呼び出しを回避する - クエリは、PLINQ から非スレッド セーフなインスタンス メソッドへの書き込みがあり、プログラムで検出されない可能性がありますいないデータが破損する可能性があります。 例外が発生する可能性もあります。 次の例では、複数のスレッドとする呼び出しを試みると、`Filestream.Write`メソッド、クラスによってサポートされていない、同時にします。 + PLINQ クエリからスレッド セーフでないインスタンス メソッドに書き込むと、プログラムで検出されない可能性のあるデータ破損が起こる可能性があります。 例外が発生する可能性もあります。 次の例では、複数のスレッドが、クラスでサポートされていない `Filestream.Write` メソッドの同時呼び出しを試みます。 ```vb Dim fs As FileStream = File.OpenWrite(…) @@ -67,23 +71,23 @@ a.Where(...).OrderBy(...).Select(...).ForAll(x => fs.Write(x)); .NET Framework のほとんどの静的メソッドはスレッド セーフであり、複数のスレッドから同時に呼び出すことができます。 ただし、このような場合でも、関連する同期によっては、クエリの処理速度が大幅に低下する可能性があります。 > [!NOTE] -> テストできますこの自分でいくつかの呼び出しを挿入することでクエリにします。 このメソッドは、デモンストレーションのためのドキュメントの例で使用されますが、PLINQ クエリで使用しないでください。 +> これは、クエリに の呼び出しをいくつか挿入することで自分でテストできます。 このメソッドは、ドキュメントの例でデモのために使用されていますが、PLINQ クエリでは使用しないでください。 -## 不要な並べ替え操作を回避します。 - PLINQ では、並列クエリを実行したときに、ソース シーケンスを処理できる同時に複数のスレッドでのパーティションに分割します。 既定では、パーティションが処理され、結果が配信されるの順序は予測可能な (などの演算子を除く`OrderBy`)。 任意のソース シーケンスの順序を保持するために PLINQ に指示できますが、パフォーマンスに悪影響を及ぼしますこれです。 ベスト プラクティス、可能な限りはクエリを構築する順序の維持に依存しないようにします。 詳細については、「[Order Preservation in PLINQ (PLINQ における順序維持)](../../../docs/standard/parallel-programming/order-preservation-in-plinq.md)」を参照してください。 +## 不要な並べ替え操作を回避する + PLINQ を使用して 1 つのクエリを並列で実行すると、ソース シーケンスがパーティションに分割され、複数のスレッド上で同時に操作できるようになります。 既定では、パーティションが処理される順序と生成される結果は予測できません (`OrderBy` などの演算子を除く)。 PLINQ に、ソース シーケンスの順序を維持するように指示することもできますが、この操作はパフォーマンスの低下を招きます。 推奨される手順は、できる限り、順序の維持に依存しないようにクエリを構成することです。 詳細については、「[Order Preservation in PLINQ (PLINQ における順序維持)](../../../docs/standard/parallel-programming/order-preservation-in-plinq.md)」を参照してください。 -## ForAll (_n) 可能であれば ForEach と - PLINQ クエリを実行、複数のスレッドの結果を処理する場合は、`foreach`ループ (`For Each` Visual Basic で)、クエリの結果を 1 つのスレッドに反映され、列挙子が順番にアクセスする必要があります。 場合によっては、これは回避できません。ただし、可能な限り、使用、`ForAll`など、スレッド セーフ コレクションへの書き込みなど、独自の結果を出力するには、各スレッドを有効にするメソッドです。 +## できる限り ForEach より ForAll を優先する + PLINQ では複数のスレッドで 1 つのクエリを実行しますが、`foreach` ループ (Visual Basic の場合は `For Each`) の結果を処理する場合、クエリ結果は 1 つのスレッドにマージされてから列挙子によって連続してアクセスされる必要があります。 これが避けられない場合もありますが、できる限り `ForAll` メソッドを使用して各スレッドで固有の結果を出力できるようにします。たとえば、 などのスレッド セーフなコレクションに書き込みます。 - 同じ問題の適用対象言い換えれば、`source.AsParallel().Where().ForAll(...)`を強く推奨される必要があります + つまり、同じ問題が にも適用されます。つまり、`source.AsParallel().Where().ForAll(...)` が以下のものよりも強く求められます。 `Parallel.ForEach(source.AsParallel().Where(), ...)`。 ## スレッド アフィニティの問題に注意する - シングル スレッド アパートメント (STA) コンポーネント向けの COM 相互運用性、Windows フォーム、Windows Presentation Foundation (WPF) などの一部のテクノロジでは、特定のスレッド上で実行するコードを必要とするスレッド アフィニティが制限される場合があります。 たとえば、Windows フォームと WPF では、コントロールへのアクセスは、そのコントロールが作成されたスレッド上でしか行うことができません。 PLINQ クエリの Windows フォーム コントロールの共有状態にアクセスしようとする場合は、デバッガーで実行している場合に、例外が発生します。 (この設定はオフにすることができます)。ただし場合、UI スレッドで、クエリを使用すると、し、アクセスできますからコントロール、 `foreach` 1 つのスレッドでそのコードが実行されるため、クエリを列挙するループになります。 + シングル スレッド アパートメント (STA) コンポーネント向けの COM 相互運用性、Windows フォーム、Windows Presentation Foundation (WPF) などの一部のテクノロジでは、特定のスレッド上で実行するコードを必要とするスレッド アフィニティが制限される場合があります。 たとえば、Windows フォームと WPF では、コントロールへのアクセスは、そのコントロールが作成されたスレッド上でしか行うことができません。 PLINQ クエリで Windows フォーム コントロールの共有状態にアクセスしようとすると、デバッガーを実行中である場合は例外が発生します (この設定はオフにできます)。ただし、クエリが UI スレッドで処理される場合、コードは 1 つのスレッドでのみ実行されるので、クエリ結果を列挙する `foreach` ループからコントロールにアクセスできます。 ## ForEach、For および ForAll のイテレーションが必ず並列実行されているとは限らない - その個々 の繰り返しに留意することが重要なまたは月のループが並列で実行する必要はありません。 そのため、イテレーションの並列実行の正確性、または特定の順序でのイテレーションの実行の正確性に依存するコードを記述しないでください。 + 、または の各ループにおける個々の反復処理が必ずしも並列実行されるとは限らないことに注意してください。 そのため、イテレーションの並列実行の正確性、または特定の順序でのイテレーションの実行の正確性に依存するコードを記述しないでください。 たとえば、次のコードはデッドロックが起こる可能性があります。 @@ -125,5 +129,5 @@ ManualResetEventSlim mre = new ManualResetEventSlim(); 具体的には、処理を適切に進めるには、並列ループの特定のイテレーションでそのループの別のイテレーションを待機するのは避ける必要があります。 並列ループで、イテレーションが逆の順序で順次スケジュールされた場合、デッドロックが発生します。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/task-based-asynchronous-programming.md b/docs/standard/parallel-programming/task-based-asynchronous-programming.md index c0802b67b0e..8f3bb0a647d 100644 --- a/docs/standard/parallel-programming/task-based-asynchronous-programming.md +++ b/docs/standard/parallel-programming/task-based-asynchronous-programming.md @@ -11,17 +11,21 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: parallelism, task +helpviewer_keywords: +- parallelism, task ms.assetid: 458b5e69-5210-45e5-bc44-3888f86abd6f -caps.latest.revision: "51" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 5b672335c237fb4e07332d0d39975aaedb375306 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 8e5367c8a786d720cdf3394922527020f8d4d47a +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # タスク ベースの非同期プログラミング タスク並列ライブラリ (TPL) は、非同期操作を表す*タスク*の概念に基づいています。 いくつかの点で、タスクはスレッドまたは 作業項目に似ていますが、高いレベルで抽象化しています。 *タスクの並列化*とは、1 つ以上の独立したタスクを同時に実行することです。 タスクが提供する主な利点は次の 2 つです。 @@ -116,7 +120,7 @@ ms.lasthandoff: 11/21/2017 各スレッドにはカルチャと UI カルチャが関連付けられています。それぞれのカルチャは プロパティにより定義されています。 スレッドのカルチャは、書式設定、解析、並べ替え、文字列比較などの操作で使用されます。 スレッドの UI カルチャはリソースの検索で使用されます。 通常、 プロパティと プロパティを使用してアプリケーション ドメイン内のすべてのスレッドの既定のカルチャを指定していない限り、スレッドの既定のカルチャと既定の UI カルチャはシステム カルチャによって定義されます。 スレッドのカルチャを明示的に設定して新しいスレッドを開始すると、新しいスレッドは呼び出し元スレッドのカルチャを継承せず、既定のシステム カルチャがそのカルチャとして使用されます。 [!INCLUDE[net_v46](../../../includes/net-v46-md.md)] 以前のバージョンの .NET Framework を対象とするアプリのタスク ベース プログラミング モデルは、この方針に準拠します。 > [!IMPORTANT] -> 呼び出し元スレッドのカルチャは、タスクのコンテキストの一部として、[!INCLUDE[net_v46](../../../includes/net-v46-md.md)] *で実行される*アプリではなく、[!INCLUDE[net_v46](../../../includes/net-v46-md.md)] を*対象とした*アプリに適用されます。 Visual Studio での上部にあるドロップダウン リストからそのバージョンを選択してプロジェクトを作成するときに、.NET Framework の特定のバージョンを対象にできます、**新しいプロジェクト**ダイアログ ボックスで、または使用できる Visual Studio の外部で、属性。 [!INCLUDE[net_v46](../../../includes/net-v46-md.md)] 以前のバージョンの .NET Framework を対象とするアプリ、または特定のバージョンの .NET Framework を対象としないアプリでは、引き続きタスクのカルチャは、タスクが実行されているスレッドのカルチャによって決まります。 +> 呼び出し元スレッドのカルチャは、タスクのコンテキストの一部として、[!INCLUDE[net_v46](../../../includes/net-v46-md.md)] *で実行される*アプリではなく、[!INCLUDE[net_v46](../../../includes/net-v46-md.md)] を*対象とした*アプリに適用されます。 Visual Studio 内部でプロジェクトを作成する場合、**[新しいプロジェクト]** ダイアログ ボックスの上部にあるドロップダウン リストから特定バージョンの .NET Framework を選択すると、そのバージョンを対象にできます。また、Visual Studio 外部では 属性を使用できます。 [!INCLUDE[net_v46](../../../includes/net-v46-md.md)] 以前のバージョンの .NET Framework を対象とするアプリ、または特定のバージョンの .NET Framework を対象としないアプリでは、引き続きタスクのカルチャは、タスクが実行されているスレッドのカルチャによって決まります。 [!INCLUDE[net_v46](../../../includes/net-v46-md.md)] 以降を対象とするアプリでは、タスクがスレッド プールのスレッドで非同期に実行されている場合でも、呼び出し元スレッドのカルチャが各タスクに継承されます。 @@ -125,14 +129,14 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[System.Globalization.CultureInfo.Class.Async#5](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.cultureinfo.class.async/cs/asyncculture1.cs#5)] [!code-vb[System.Globalization.CultureInfo.Class.Async#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.cultureinfo.class.async/vb/asyncculture1.vb#5)] - Visual Studio を使用している場合は省略できます、属性を代わりに、.NET Framework 4.6 でプロジェクトを作成するときのターゲットとして選択、**新しいプロジェクト**ダイアログ。 + Visual Studio を使用している場合、プロジェクトを **[新しいプロジェクト]** ダイアログで作成する際に、 属性を省略して、代わりに .NET Framework 4.6 を対象として選択できます。 [!INCLUDE[net_v46](../../../includes/net-v46-md.md)] 以前のバージョンの .NET Framework を対象とするアプリの動作が出力に反映されるようにするため、ソース コードから 属性を削除します。 出力には、呼び出し元スレッドのカルチャではなく、既定のシステム カルチャの書式指定規則が反映されます。 非同期タスクとカルチャの詳細については、「」トピックの「カルチャおよび非同期タスク ベースの操作」を参照してください。 ## タスクの継続の作成 - メソッドを使用して、起動するタスクを指定できます、*継続元タスク*が完了するとします。 継続タスクのデリゲートは継続元タスクへの参照を渡し、継続元タスクのステータスを調査できるようにし、また プロパティの値を取得して、継続元の出力を継続への入力として使用できるようにします。 + メソッドおよび メソッドで、"*継続元タスク*" が終了したときに開始されるタスクを指定できます。 継続タスクのデリゲートは継続元タスクへの参照を渡し、継続元タスクのステータスを調査できるようにし、また プロパティの値を取得して、継続元の出力を継続への入力として使用できるようにします。 次の例では、`getData` タスクは メソッドの呼び出しによって開始されます。 `processData` タスクは `getData` が終了したときに自動的に開始され、`displayData` は `processData` が終了したときに開始されます。 `getData` は、`processData` タスクの `getData` プロパティを使用して タスクがアクセス可能な、整数の配列を生成します。 `processData` はその配列を処理し、 メソッドに渡されるラムダ式の戻り値の型から推論される型を持つ結果を返します。 `displayData` タスクは、`processData` が終了したときに自動的に実行され、 ラムダ式が返した `processData` オブジェクトは、`displayData` タスクの `processData` プロパティを使用して、 タスクからアクセス可能です。 `displayData` タスクは `processData` タスクから結果を受け取り、同様の方法を使用して (プログラムで使用できるようになったと) 推論される型を持つ結果を プロパティで生成します。 @@ -157,7 +161,7 @@ ms.lasthandoff: 11/21/2017 親タスクはデタッチされた子タスクの終了を待機しないことに注意してください。 ## 子タスクの作成 - タスクで実行されているユーザー コードを持つタスクを作成すると、オプション、新しいタスクと呼ばれる、*アタッチされた子タスク*親タスクのです。 オプションを使用すると、構成されたタスクの並列化を表現できます。親タスクは、すべてのアタッチされた子タスクが終了するのを暗黙的に待機するためです。 次の例は、アタッチされた子タスクを 10 個作成する親タスクを示しています。 この例は メソッドを呼び出して親タスクの完了を待機しているが、アタッチされた子タスクの完了を明示的には待機する必要がないことに注意してください。 + タスクで実行中のユーザー コードで オプションを使用してタスクを作成すると、新しいタスクは親タスクに "*アタッチされた子タスク*" になります。 オプションを使用すると、構成されたタスクの並列化を表現できます。親タスクは、すべてのアタッチされた子タスクが終了するのを暗黙的に待機するためです。 次の例は、アタッチされた子タスクを 10 個作成する親タスクを示しています。 この例は メソッドを呼び出して親タスクの完了を待機しているが、アタッチされた子タスクの完了を明示的には待機する必要がないことに注意してください。 [!code-csharp[TPL_TaskIntro#8](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_taskintro/cs/child1.cs#8)] [!code-vb[TPL_TaskIntro#8](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_taskintro/vb/child1.vb#8)] @@ -165,7 +169,7 @@ ms.lasthandoff: 11/21/2017 親タスクは オプションを使用して、他のタスクが親タスクにアタッチすることを防ぐことができます。 詳細については、「[アタッチされた子タスクとデタッチされた子タスク](../../../docs/standard/parallel-programming/attached-and-detached-child-tasks.md)」を参照してください。 ## タスクの完了を待機する - 型の複数のオーバー ロードを提供する、`System.Threading.Tasks.Task.Wait`タスクの完了を待機することができるようにするメソッド。 さらに、静的な メソッドおよび メソッドのオーバーロードにより、一部またはすべてのタスクの配列が終了するまで待機できます。 + 型と 型には、タスクが終了するまで待機できる メソッドと `System.Threading.Tasks.Task.Wait` メソッドのオーバーロードがいくつか用意されています。 さらに、静的な メソッドおよび メソッドのオーバーロードにより、一部またはすべてのタスクの配列が終了するまで待機できます。 通常は、タスクを待機するのは次のいずれかの場合です。 @@ -207,7 +211,7 @@ ms.lasthandoff: 11/21/2017 メソッドは、指定時間後に終了する オブジェクトを生成します。 このメソッドを使用すると、データのポーリングをときどき行うループをビルドしたり、タイムアウトを使用したり、ユーザー入力の処理を遅延させたりすることができます。 ### Task(T).FromResult - メソッドを使用すると、あらかじめ計算された結果を保持する オブジェクトを作成できます。 このメソッドは オブジェクトの結果があらかじめ計算されている オブジェクトを返す、非同期操作を実行する場合に便利です。 使用する例についてはをキャッシュに保持されている非同期ダウンロード操作の結果を取得するには、次を参照してください。[する方法: 事前計算済みのタスクを作成する](../../../docs/standard/parallel-programming/how-to-create-pre-computed-tasks.md)です。 + メソッドを使用すると、あらかじめ計算された結果を保持する オブジェクトを作成できます。 このメソッドは オブジェクトの結果があらかじめ計算されている オブジェクトを返す、非同期操作を実行する場合に便利です。 キャッシュに保持されている非同期ダウンロード操作の結果を取得する の使用例の詳細については、「[方法: 事前計算済みのタスクを作成する](../../../docs/standard/parallel-programming/how-to-create-pre-computed-tasks.md)」を参照してください。 ## タスクでの例外処理 タスクで 1 つ以上の例外がスローされると、例外は 例外でラップされます。 例外はタスクに連結されたスレッドに反映されます。通常は、タスクの終了を待機しているスレッドか、または プロパティにアクセスするスレッドです。 この動作では、.NET Framework ポリシーが適用され、既定ではすべてのハンドルされない例外によってプロセスが終了されます。 呼び出し元のコードは `try`/`catch` ブロックで、次のいずれかを使用して、例外を処理できます。 @@ -236,7 +240,7 @@ ms.lasthandoff: 11/21/2017 - 最も一般的なパターンは、1 つのステートメントで 1 つのタスクを作成および開始する です。 -- 複数の継続元から継続タスクを作成するときに使用して、メソッドまたはメソッドまたはの同等のクラスです。 詳細については、「[継続タスクを使用したタスクの連結](../../../docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md)」を参照してください。 +- 複数の継続元から継続タスクを作成する場合は、 メソッドまたは メソッドを使用するか、 クラスの同等のメソッドを使用します。 詳細については、「[継続タスクを使用したタスクの連結](../../../docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md)」を参照してください。 - `BeginX` インスタンスまたは `EndX` インスタンスで非同期プログラミング モデルの メソッドおよび メソッドをカプセル化するには、 メソッドを使用します。 詳細については、「[TPL and Traditional .NET Framework Asynchronous Programming](../../../docs/standard/parallel-programming/tpl-and-traditional-async-programming.md)」(TPL と従来の .NET Framework 非同期プログラミング) を参照してください。 @@ -258,7 +262,7 @@ ms.lasthandoff: 11/21/2017 ## 関連トピック -|タイトル|説明| +|Title|説明| |-|-| |[継続タスクを使用したタスクの連結](../../../docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md)|継続の機能について説明します。| |[アタッチされた子タスクとデタッチされた子タスク](../../../docs/standard/parallel-programming/attached-and-detached-child-tasks.md)|アタッチされた子タスクとデタッチされた子タスクの違いについて説明します。| @@ -273,6 +277,6 @@ ms.lasthandoff: 11/21/2017 |[データの並列化](../../../docs/standard/parallel-programming/data-parallelism-task-parallel-library.md)| および を使用してデータを対象に並列ループを作成する方法について説明しています。| |[並列プログラミング](../../../docs/standard/parallel-programming/index.md)|.NET Framework 並列プログラミングのトップ レベル ノード。| -## 関連項目 +## 参照 [並列プログラミング](../../../docs/standard/parallel-programming/index.md) [.NET Framework による並列プログラミングのサンプル](http://code.msdn.microsoft.com/Samples-for-Parallel-b4b76364) diff --git a/docs/standard/parallel-programming/task-cancellation.md b/docs/standard/parallel-programming/task-cancellation.md index 7879974efc2..7c5e51110ef 100644 --- a/docs/standard/parallel-programming/task-cancellation.md +++ b/docs/standard/parallel-programming/task-cancellation.md @@ -15,18 +15,21 @@ helpviewer_keywords: - tasks, cancellation - asynchronous task cancellation ms.assetid: 3ecf1ea9-e399-4a6a-a0d6-8475f48dcb28 -caps.latest.revision: "18" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 106c89ca9fcfb8bbab23b982cdc524ff78d21d15 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 46e202d4f5cafdef44f908d44f9362127bc6eb1a +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # タスクのキャンセル - クラスおよび クラスは、.NET Framework のキャンセル トークンを使用したキャンセルをサポートしています。 詳細については、次を参照してください。[マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md)です。 Task クラスのキャンセル処理では、キャンセル可能な操作を表すユーザー デリゲートと、キャンセルを要求したコードが連携します。 正常なキャンセル処理では、要求元のコードの呼び出し元、メソッド、およびユーザー デリゲートが適切なタイミングで、操作を終了します。 次のオプションのいずれかを使用して操作を終了できます。 + クラスおよび クラスは、.NET Framework のキャンセル トークンを使用したキャンセルをサポートしています。 詳細については、「[マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md)」を参照してください。 Task クラスのキャンセル処理では、キャンセル可能な操作を表すユーザー デリゲートと、キャンセルを要求したコードが連携します。 キャンセル処理が正常に実行されるためには、要求コードが メソッドを呼び出し、ユーザー デリゲートが操作を適時に終了する必要があります。 次のオプションのいずれかを使用して操作を終了できます。 - デリゲートから戻ります。 多くの場合、この処理で十分ですが、この方法で取り消されたタスク インスタンスは、 状態ではなく、 状態に遷移します。 @@ -37,16 +40,16 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[TPL_Cancellation#02](../../../samples/snippets/csharp/VS_Snippets_Misc/tpl_cancellation/cs/snippet02.cs#02)] [!code-vb[TPL_Cancellation#02](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpl_cancellation/vb/module1.vb#02)] - 完全な例では、次を参照してください。[する方法: タスクとその子を取り消す](../../../docs/standard/parallel-programming/how-to-cancel-a-task-and-its-children.md)です。 + より詳細な例については、「[方法: タスクとその子を取り消す](../../../docs/standard/parallel-programming/how-to-cancel-a-task-and-its-children.md)」を参照してください。 タスク インスタンスがユーザー コードによってスローされた を確認した場合は、例外のトークンと関連付けられたトークン (タスクを作成した API に渡されたトークン) とを比較します。 これらのトークンが同一であり、トークンの プロパティから true が返されると、タスクはこれをキャンセルの受信確認と解釈し、Canceled 状態に遷移します。 メソッドまたは メソッドを使用してタスクを待機しない場合、タスクの状態は に設定されます。 - タスクが Canceled 状態に遷移するを待っている場合、例外 (でラップ、例外) がスローされます。 この例外は、障害のある状況ではなく、正常なキャンセル処理を示すことに注意してください。 このため、タスクの プロパティは `null`を返します。 + タスクが Canceled 状態に遷移するのを待っていると、 例外 ( 例外にラップされている) がスローされます。 この例外は、障害のある状況ではなく、正常なキャンセル処理を示すことに注意してください。 このため、タスクの プロパティは `null`を返します。 トークンの プロパティが false を返した場合、または例外のトークンがタスクのトークンと一致しない場合、 は標準の例外のように扱われるため、タスクは Faulted 状態に遷移します。 他の例外が存在する場合も、タスクが Faulted 状態に遷移することに注意してください。 完了したタスクの状態は プロパティで取得できます。 キャンセルが要求された後も、タスクが一部の項目の処理を継続する可能性があります。 -## 関連項目 +## 参照 [マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md) [方法: タスクとその子を取り消す](../../../docs/standard/parallel-programming/how-to-cancel-a-task-and-its-children.md) diff --git a/docs/standard/parallel-programming/task-parallel-library-tpl.md b/docs/standard/parallel-programming/task-parallel-library-tpl.md index a784e668199..ce2ec2038e0 100644 --- a/docs/standard/parallel-programming/task-parallel-library-tpl.md +++ b/docs/standard/parallel-programming/task-parallel-library-tpl.md @@ -13,24 +13,27 @@ helpviewer_keywords: - .NET, parallel programming in - Parallel Programming ms.assetid: b8f99f43-9104-45fd-9bff-385a20488a23 -caps.latest.revision: "37" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 0e1dcb10189405c368b3739020a7bfa875792184 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2a124d355b4480aebff3c40e2ccece618e1979f6 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # タスク並列ライブラリ (TPL) タスク並列ライブラリ (TPL: Task Parallel Library) は、 名前空間および 名前空間におけるパブリック型と API のセットです。 TPL の目的は、アプリケーションに並列処理と同時実行を追加するプロセスを簡略化して、開発者の生産性を高めることです。 TPL は、使用可能なすべてのプロセッサを最も効率的に使用するように、同時実行の程度を動的に拡大します。 さらに TPL は、作業のパーティション分割、 上のスレッドのスケジュール、キャンセルのサポート、状態管理、および他の低水準の詳細を処理します。 TPL を使用すると、コードのパフォーマンスが大幅に向上し、目的を達成するためのプログラミング作業に集中できます。 - 以降で、 [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)]TPL はマルチ スレッドおよび並列コードを記述することをお勧めします。 ただし、すべてのコードが並列化に適している訳ではありません。ループの各反復処理で少量の作業のみを実行する場合、または多数の反復処理のために実行しない場合、並列化のオーバーヘッドによってコードの実行が遅くなる可能性があります。 さらに、マルチスレッド コードのような並列化によって、プログラムの実行がより複雑になります。 TPL はマルチスレッドのシナリオを簡略化しますが、たとえばロック、デッドロックおよび競合状態のスレッド処理の基本的な概念を理解し、TPL を効率的に使用することをお勧めします。 + [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降では、マルチスレッド コードおよび並列コードを作成する際に TPL を使用することをお勧めします。 ただし、すべてのコードが並列化に適している訳ではありません。ループの各反復処理で少量の作業のみを実行する場合、または多数の反復処理のために実行しない場合、並列化のオーバーヘッドによってコードの実行が遅くなる可能性があります。 さらに、マルチスレッド コードのような並列化によって、プログラムの実行がより複雑になります。 TPL はマルチスレッドのシナリオを簡略化しますが、たとえばロック、デッドロックおよび競合状態のスレッド処理の基本的な概念を理解し、TPL を効率的に使用することをお勧めします。 ## 関連トピック -|タイトル|説明| +|Title|説明| |-|-| |[データの並列化](../../../docs/standard/parallel-programming/data-parallelism-task-parallel-library.md)|並列の `for` ループおよび `foreach` ループ (Visual Basic では `For` および `For Each`) を作成する方法について説明します。| |[タスク ベースの非同期プログラミング](../../../docs/standard/parallel-programming/task-based-asynchronous-programming.md)| を使用して暗黙的にタスクを作成および実行する方法、または オブジェクトを直接使用して明示的にタスクを作成および実行する方法について説明します。| @@ -40,5 +43,5 @@ ms.lasthandoff: 10/18/2017 |[Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md)|LINQ クエリでデータの並列化を達成する方法について説明します。| |[並列プログラミング](../../../docs/standard/parallel-programming/index.md)|.NET 並列プログラミングのトップ レベル ノード。| -## 関連項目 +## 参照 [.NET Framework による並列プログラミングのサンプル](http://code.msdn.microsoft.com/Samples-for-Parallel-b4b76364) diff --git a/docs/standard/parallel-programming/tpl-and-traditional-async-programming.md b/docs/standard/parallel-programming/tpl-and-traditional-async-programming.md index eaf0558159f..1d199390b35 100644 --- a/docs/standard/parallel-programming/tpl-and-traditional-async-programming.md +++ b/docs/standard/parallel-programming/tpl-and-traditional-async-programming.md @@ -11,24 +11,28 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: tasks, with other asynchronous models +helpviewer_keywords: +- tasks, with other asynchronous models ms.assetid: e7b31170-a156-433f-9f26-b1fc7cd1776f -caps.latest.revision: "16" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 0f29ca819fa7a59edeb105720d74a25512e95bdc -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 50c4f9cfeb135f1046fbb427585897ca99248afd +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # TPL と従来の .NET Framework 非同期プログラミング .NET Framework の I/O バインドの非同期操作および計算主体の非同期操作には、次の 2 つの標準パターンがあります。 - 非同期操作が Begin/End メソッドのペアによって表される非同期プログラミング モデル (APM)。 など。 -- イベント ベースの非同期パターン (EAP)、非同期操作が名前付きであるメソッドとイベントのペアで表されている*OperationName*Async および*OperationName*完了すると、たとえば、 です。 (EAP は、.NET Framework Version 2.0 で導入されました)。 +- イベントベースの非同期パターン (EAP)。たとえば など、*OperationName*Async および *OperationName*Completed という名前のメソッドとイベントのペアによって非同期操作が表されています。 (EAP は、.NET Framework Version 2.0 で導入されました)。 タスク並列ライブラリ (TPL) は、これらの非同期パターンと共にさまざまな方法で使用されます。 ライブラリ使用時に、APM 操作と EAP 操作をタスクとして公開するか、または APM パターンを公開し、タスク オブジェクトを使用して内部的に実装することができます。 どちらの場合でも、タスク オブジェクトを使用することでコードを簡易化し、次のような便利な機能を活用できます。 @@ -110,7 +114,7 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[FromAsync#10](../../../samples/snippets/csharp/VS_Snippets_Misc/fromasync/cs/snippet10.cs#10)] [!code-vb[FromAsync#10](../../../samples/snippets/visualbasic/VS_Snippets_Misc/fromasync/vb/snippet10.vb#10)] - 追加の例外処理を含む、クライアント コードからメソッドを呼び出す方法を示していますより詳細な例については[する方法: タスクに EAP パターンをラップ](../../../docs/standard/parallel-programming/how-to-wrap-eap-patterns-in-a-task.md)です。 + 追加の例外処理を含み、クライアント コードからメソッドを呼び出す方法を示す、より包括的な例については、「[方法: タスクに EAP パターンをラップする](../../../docs/standard/parallel-programming/how-to-wrap-eap-patterns-in-a-task.md)」を参照してください。 によって作成されたタスクは、その TaskCompletionSource によって開始されるので、ユーザー コードがそのタスクで Start メソッドを呼び出さないようにする必要があります。 @@ -123,7 +127,7 @@ ms.lasthandoff: 10/18/2017 [!code-vb[FromAsync#09](../../../samples/snippets/visualbasic/VS_Snippets_Misc/fromasync/vb/module1.vb#09)] ## StreamExtensions サンプル コードの使用 - Streamextensions.cs ファイルに[、.NET Framework 4 による並列プログラミングのサンプル](http://go.microsoft.com/fwlink/?LinkID=165717)MSDN Web サイト、およびネットワーク I/O 非同期のファイルのタスク オブジェクトを使用するいくつかの参照実装が含まれています。 + MSDN Web サイトの「[Samples for Parallel Programming with the .NET Framework 4 (.NET Framework 4 での並列プログラミングの例)](http://go.microsoft.com/fwlink/?LinkID=165717)」に示す Streamextensions.cs ファイルには、非同期ファイルおよびネットワーク I/O に対してタスク オブジェクトを使用する参照実装がいくつか含まれています。 -## 関連項目 +## 参照 [タスク並列ライブラリ (TPL)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md) diff --git a/docs/standard/parallel-programming/understanding-speedup-in-plinq.md b/docs/standard/parallel-programming/understanding-speedup-in-plinq.md index 7083f0ed96d..4452d53a7ac 100644 --- a/docs/standard/parallel-programming/understanding-speedup-in-plinq.md +++ b/docs/standard/parallel-programming/understanding-speedup-in-plinq.md @@ -11,29 +11,33 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: PLINQ queries, performance tuning +helpviewer_keywords: +- PLINQ queries, performance tuning ms.assetid: 53706c7e-397d-467a-98cd-c0d1fd63ba5e -caps.latest.revision: "14" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: c3373cb6a2c535bd7d42eb062e1f9727952f7cfb -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 7d94a1fa4c559552a32140fd172c0c62e033f7a8 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # PLINQ での高速化について -PLINQ の主な目的では、実行速度を高めるの LINQ to Objects クエリ マルチコア コンピューターで並列クエリ デリゲートを実行することによってです。 PLINQ は、ソース コレクション内の各要素の処理が独立しており、個別のデリゲートの間で関係する共有状態がない場合に発揮します。 このような操作は LINQ to Objects および PLINQ では一般的とも呼ばれます"*適切な並列*"であることから簡単に複数のスレッドでのスケジュール設定します。 ただし、すべてのクエリのみで構成する適切な並列操作です。ほとんどの場合、クエリはいずれかを並行化できない、または並列実行速度が低下するいくつかの演算子ではします。 クエリを完全に適切な並列でも PLINQ 必要があります、データ ソースをパーティション分割と、スレッドに作業をスケジュール通常、クエリの完了時に結果をマージします。 これらすべての操作を並列化以外の計算コストを追加します。これらのコストを並列化を追加すると呼びます*オーバーヘッド*です。 PLINQ クエリの最適なパフォーマンスを得るには、目標は、適切な並列されている部分を最大化し、オーバーヘッドが必要な部分を最小限に抑えるです。 この記事では、正しい結果を生成できる限り効率的な PLINQ クエリを記述するうえで役立つ情報を提供します。 +PLINQ の主な目的は、マルチコア コンピューターでクエリ デリゲートを並列実行することで、LINQ to Objects クエリの実行を高速化することです。 PLINQ は、ソース コレクション内の各要素の処理が独立しており、個々のデリゲート間に関連する共有状態がない場合に最適です。 このような操作は LINQ to Objects および PLINQ で一般的であり、複数のスレッドでのスケジューリングに適しているため、多くの場合、"*適切な並列操作*" と呼ばれます。 ただし、すべてのクエリが適切な並列操作のみで構成されているわけではなく、ほとんど場合、クエリには、並列化できないか、並列実行速度を低下させるいくつかの演算子が含まれます。 また、完全に適切な並列操作であるクエリの場合でも、PLINQ では引き続きデータ ソースをパーティション分割し、スレッドでの作業をスケジューリングし、通常はクエリの完了時に結果をマージする必要があります。 これらすべての操作では並列処理の計算コストが追加されます。このような並列処理の追加コストを*オーバーヘッド* と呼びます。 PLINQ クエリでの最適なパフォーマンスを実現するための目標は、適切な並列処理の部分を最大化し、オーバーヘッドを必要とする部分を最小化することです。 この記事では、引き続き正しい結果を生成しながら、できる限り効率的な PLINQ クエリを記述するのに役立つ情報を提供します。 ## PLINQ クエリのパフォーマンスに影響する要因 - 次のセクションでは、並列クエリ パフォーマンスに影響する最も重要な要因のいくつか示します。 これらは、一般的なないステートメントを単独で常にクエリのパフォーマンスを予測するだけで十分です。 いつものように、コンピューター上の特定のクエリの代表的な構成と読み込みの範囲と実際のパフォーマンスを測定する重要なです。 + 次のセクションでは、並列クエリのパフォーマンスに影響する最も重要な要因をいくつかリストします。 これらは一般的なものであり、あらゆる状況でクエリのパフォーマンスを予測するには十分ではありません。 当然のことながら、さまざまな代表的な構成と負荷を考慮して、コンピューターでの特定のクエリの実際のパフォーマンスを測定することが重要です。 -1. 全体的な作業のコストを計算します。 +1. 作業全体の計算コスト。 - 高速化を行うには、PLINQ クエリは、必要な適切な並列処理のオーバーヘッドを相殺をする必要があります。 作業は、ソース コレクション内の要素の数を掛けた値の各デリゲートの計算コストとして表現できます。 想定されるので、操作を並列化できますより計算負荷の高いことが、大きい高速化の機会です。 たとえば、関数が 1 ミリ秒を実行する場合、1000 個の要素になります、その操作を実行する 1 秒 4 つのコアを使用しているコンピューター上で並列クエリは順次クエリは 250 ミリ秒しかにかかる場合があります。 これには、750 ミリ秒の高速化が生成されます。 関数は、各要素に対して実行する 1 秒を必要な場合、高速化になります 750 秒です。 デリゲートが非常に多くの場合は、PLINQ はソース コレクション内のいくつかのアイテムのみが大幅に高速化を提供します。 逆に、単純なデリゲートで小さなソース コレクションは一般的に PLINQ の適切な候補です。 + 高速化を実現するには、PLINQ クエリでオーバーヘッドを相殺するために十分適切な並列処理を行う必要があります。 この作業は、ソース コレクション内の要素数を掛けた各デリゲートの計算コストとして表すことができます。 操作を並列化でき、計算コストが増えるほど、高速化の機会が増えると想定します。 たとえば、関数の実行に 1 ミリ秒かかる場合、1000 要素での順次クエリの操作の実行に 1 秒かかり、一方、4 コアのコンピューターでの並列クエリには 250 ミリ秒しかかかりません。 これで、750 ミリ秒の高速化が実現します。 関数で各要素の実行に 1 秒を要した場合、750 秒の高速化となります。 デリゲートに非常に多くのコストがかかる場合、PLINQ では、ソース コレクション内のごく少数のアイテムのみで大幅な高速化を実現できることがあります。 逆に、単純なデリゲートの小さなソース コレクションは、一般的に PLINQ には適していません。 - 次の例では、簡易問い合わせと、その関数選択 にはに、多く作業にはが含まれていると仮定した場合、PLINQ で有力候補では可能性があります。 queryB は、Select ステートメントに十分な処理がないと、並列処理のオーバーヘッドは、高速化のほとんどまたはすべてをオフセットがあるために、適切な候補ではありません。 + 次の例では、queryA は PLINQ に適しており、Select 関数で多くの処理が行われると仮定します。 Select ステートメントで十分な処理が行われず、並列処理のオーバーヘッドでほとんどまたはすべての高速化が相殺されるため、queryB は適していません。 ```vb Dim queryA = From num In numberList.AsParallel() @@ -53,42 +57,42 @@ PLINQ の主な目的では、実行速度を高めるの LINQ to Objects クエ select num; //not as good for PLINQ ``` -2. システム (並列処理の次数) 上の論理コアの数。 +2. システムでの論理コアの数 (並列処理の程度)。 - このポイントは、前のセクションに、明確な推論は、適切な並列クエリを上で実行高速マシンより多くのコアと同時実行性のスレッド間で作業を分けることがあるためです。 高速化の全体量は、クエリの全体的な作業の割合が並列化に依存します。 ただしと想定しないでとして 2 回、すべてのクエリを実行は、4 コアのコンピューターと 8 コアのコンピューターに高速です。 最適なパフォーマンスのクエリをチューニングするときは、さまざまなコア数のコンピューターで実際の結果を測定する必要があります。 このポイントが 1 のポイントに関連する: 大規模なデータセットがより多くのコンピューティング リソースを活用するために必要です。 + このポイントは前のセクションの当然の結果です。つまり、より多くの同時実行スレッドに作業が分散されるため、より多くのコアを持つコンピューターでの適切な並列処理を行うクエリはより高速に実行されます。 高速化の全体量は、並列化可能なクエリの作業全体の割合によって異なります。 ただし、すべてのクエリについて、8 コア コンピューターでの実行速度が 4 コア コンピューターでの実行速度の 2 倍になると想定しないでください。 最適なパフォーマンスを得るためにクエリを調整する際には、さまざまなコア数のコンピューターでの実際の結果を測定することが重要です。 このポイントはポイント 1 に関連します。つまり、より多くのコンピューティング リソースを利用するには、より大きなデータセットが必要になります。 -3. 数と操作の種類。 +3. 操作の数と種類。 - PLINQ では、ソース シーケンス内の要素の順序を維持するために必要な場合に、AsOrdered 演算子を提供します。 順序付けに関連するコストが、このコストは通常中程度。 同様に、GroupBy および結合操作には、オーバーヘッドが発生します。 PLINQ は、任意の順序でソース コレクション内の要素を処理し、準備が完了するとすぐに次の演算子に渡すことができる場合に発揮します。 詳細については、「[Order Preservation in PLINQ (PLINQ における順序維持)](../../../docs/standard/parallel-programming/order-preservation-in-plinq.md)」を参照してください。 + PLINQ では、ソース シーケンス内の要素の順序を維持するために必要な場合に、AsOrdered 演算子を提供します。 順序付けに関連するコストがありますが、通常、これはわずかなコストです。 GroupBy および Join 操作には同様にオーバーヘッドが発生します。 PLINQ は、任意の順序でソース コレクション内の要素を処理し、準備ができしだい次の演算子に渡すことができる場合に最適です。 詳細については、「[Order Preservation in PLINQ (PLINQ における順序維持)](../../../docs/standard/parallel-programming/order-preservation-in-plinq.md)」を参照してください。 -4. クエリの実行の形式。 +4. クエリ実行の形式。 - ToArray または ToList を呼び出すことによって、クエリの結果を格納する場合は、1 つのデータ構造にすべての並列スレッドの結果をマージする必要があります。 これには、ロックベースの計算コストが含まれます。 同様に、foreach (Visual Basic では各) For ループを使用して、結果を反復処理する場合、ワーカー スレッドからの結果を列挙子のスレッドにシリアル化される必要があります。 各スレッドの結果に基づいてアクションを実行する場合は、複数のスレッドでこの作業を実行する ForAll メソッドを使用することができます。 + ToArray または ToList を呼び出すことでクエリの結果を格納する場合、すべての並列スレッドからの結果を単一のデータ構造にマージする必要があります。 これには、避けられない計算コストが含まれます。 同様に、foreach (Visual Basic では For Each) ループを使用して結果を反復処理する場合、ワーカー スレッドからの結果を列挙子スレッドにシリアル化する必要があります。 ただし、各スレッドからの結果に基づいて一部のアクションを実行するだけの場合は、ForAll メソッドを使用して、複数のスレッドでこの処理を実行することができます。 5. マージ オプションの種類。 - PLINQ は、いずれかの出力をバッファリングして作成のチャンクまたは一度に結果セット全体が作成された後、または else 個々 の結果をストリームが生成されるように構成できます。 前者の場合は、全体の実行時間を短縮および後者結果の生成される要素間の遅延が減少します。 マージ オプションが常に主要な影響のない全体的なクエリ パフォーマンス、中に影響を与えること見かけ上のパフォーマンス、ユーザーはどのくらいの時間を制御するための結果を表示するまで待機する必要があります。 詳細については、「[Merge Options in PLINQ (PLINQ のマージ オプション)](../../../docs/standard/parallel-programming/merge-options-in-plinq.md)」を参照してください。 + PLINQ は、出力をバッファリングし、分割して生成するか、結果セット全体が生成されてからすべて一度に生成するか、あるいは生成時に個々の結果をストリーミングするように構成することができます。 前者では実行時間全体が短縮され、後者では生成される要素間の待機時間が減少します。 マージ オプションが常にクエリのパフォーマンス全体に大きな影響を与えるわけではありませんが、ユーザーが結果の表示を待機する時間が制御されるため、体感パフォーマンスに影響する場合があります。 詳細については、「[Merge Options in PLINQ (PLINQ のマージ オプション)](../../../docs/standard/parallel-programming/merge-options-in-plinq.md)」を参照してください。 6. パーティション分割の種類。 - 場合によっては、インデックス可能なソース コレクションに対する PLINQ クエリが不均衡の作業負荷にあります。 この場合は、カスタム パーティショナーを作成することで、クエリのパフォーマンスを向上させることができます。 詳細については、「[Custom Partitioners for PLINQ and TPL (PLINQ および TPL 用のカスタム パーティショナー)](../../../docs/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl.md)」を参照してください。 + 場合によっては、インデックス可能なソース コレクションに対する PLINQ クエリにより、作業負荷が不均等になります。 その際に、カスタム パーティショナーを作成することで、クエリのパフォーマンスを向上できる場合があります。 詳細については、「[Custom Partitioners for PLINQ and TPL (PLINQ および TPL 用のカスタム パーティショナー)](../../../docs/standard/parallel-programming/custom-partitioners-for-plinq-and-tpl.md)」を参照してください。 -## PLINQ が順次モードを選択すると - PLINQ は常に、以上の速度でクエリを順次実行とクエリの実行を試みます。 PLINQ は負荷の大きい計算方法を参照できませんが高価なユーザー デリゲートが、または大きさ入力ソースが、特定のクエリ「の図形です」を探しては 具体的には、クエリ演算子または並列モードで実行速度が低下するクエリが通常発生演算子の組み合わせの検索します。 このような図形が検出されると、既定では、PLINQ は、シーケンシャル モードに戻ります。 +## PLINQ で順次モードが選択されるタイミング + PLINQ は常に、少なくともクエリが順次実行される同じ速度でクエリを実行しようとします。 PLINQ では、ユーザー デリゲートの計算コストがどれくらい高いかや、入力ソースがどれくらい大きいかは確認されませんが、特定のクエリの "形状" は検索されます。 具体的には、通常、並列モードでのクエリの実行により時間がかかるクエリ演算子または演算子の組み合わせが検索されます。 このような形状が検出されると、PLINQ は既定でシーケンシャル モードに戻ります。 - ただし、特定のクエリのパフォーマンスを測定した後には、実際に実行される高速並列モードでを判断可能性があります。 このような場合に使用することができます、フラグを使用して、クエリを並列化するために PLINQ に指示するメソッド。 詳細については、「[How to: Specify the Execution Mode in PLINQ (方法: PLINQ の実行モードを指定する)](../../../docs/standard/parallel-programming/how-to-specify-the-execution-mode-in-plinq.md)」を参照してください。 + ただし、特定のクエリのパフォーマンスを測定した後に、実際には並列モードではより高速に実行されることがわかる場合があります。 このような場合は、 メソッドで フラグを使用して、クエリを並列化するように PLINQ に指示できます。 詳細については、「[How to: Specify the Execution Mode in PLINQ (方法: PLINQ の実行モードを指定する)](../../../docs/standard/parallel-programming/how-to-specify-the-execution-mode-in-plinq.md)」を参照してください。 - 次の一覧には、シーケンシャル モードで実行されます。 既定で PLINQ クエリの図形がについて説明します。 + 次のリストでは、既定で PLINQ がシーケンシャル モードで実行するクエリの形状について説明します。 -- ここで、インデックス付きの SelectMany にインデックス付けを選択を含むクエリまたは順序またはフィルター演算子が削除されたか、元のインデックスを再配置した後に ElementAt 句を指定します。 +- Select、インデックス付きの Where、インデックス付きの SelectMany、または ElementAt 句 (元のインデックスを削除または再配置した順序付けまたはフィルタリング演算子の後) を含むクエリ。 -- Take、TakeWhile、スキップ、SkipWhile 演算子が含まれており、ここで、ソース シーケンス内のインデックスは順番がない、元のクエリ。 +- Take、TakeWhile、Skip、SkipWhile 演算子を含み、ソース シーケンス内の where インデックスが元の順序ではないクエリ。 -- またはを含む Zip SequenceEquals、ない場合は、最初の並べ替えられたインデックスのデータ ソースのいずれかが、その他のデータ ソース [indexable] クエリ (つまり、配列または IList(T)) です。 +- データ ソースのいずれかに最初に順序付けされたインデックスがあり、他のデータ ソースがインデックス可能 (つまり、配列または IList(T)) である場合を除き、Zip または SequenceEquals を含むクエリ。 - インデックス可能なデータ ソースに適用されている場合を除き、Concat を含むクエリ。 -- 含むクエリは、インデックス可能データ ソースに適用される場合を除き、反転します。 +- インデックス可能なデータ ソースに適用されている場合を除き、Reverse を含むクエリ。 -## 関連項目 +## 参照 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) diff --git a/docs/standard/parallel-programming/using-tpl-with-other-asynchronous-patterns.md b/docs/standard/parallel-programming/using-tpl-with-other-asynchronous-patterns.md index ffb5cf61779..820743406cc 100644 --- a/docs/standard/parallel-programming/using-tpl-with-other-asynchronous-patterns.md +++ b/docs/standard/parallel-programming/using-tpl-with-other-asynchronous-patterns.md @@ -8,27 +8,31 @@ ms.suite: ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article -helpviewer_keywords: tasks and APM +helpviewer_keywords: +- tasks and APM ms.assetid: 7add905b-ff60-4353-af79-5089038d9a08 -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 05883a89511574c43bf27d9781e862f7f52a6471 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 89ea927d2862aa447ad2b66c77eb493541b0e62d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # TPL と他の非同期パターンの使用 -タスク並列ライブラリは、従来 .NET Framework 非同期プログラミング パターンとさまざまな方法で使用できます。 +タスク並列ライブラリは、さまざまな方法で従来の .NET Framework 非同期プログラミング パターンと併用できます。 ## このセクションの内容 [TPL と従来の .NET Framework 非同期プログラミング](../../../docs/standard/parallel-programming/tpl-and-traditional-async-programming.md) - 説明方法オブジェクトは、非同期プログラミング モデル (APM) と、イベント ベースの非同期パターン (EAP) と組み合わせて使用する可能性があります。 + 非同期プログラミング モデル (APM) とイベントベースの非同期パターン (EAP) と組み合わせて オブジェクトを使用する方法について説明します。 [方法: タスクに EAP パターンをラップする](../../../docs/standard/parallel-programming/how-to-wrap-eap-patterns-in-a-task.md) - 使用する方法を示しますEAP パターンをカプセル化するオブジェクト。 + オブジェクトを使用して EAP パターンをカプセル化する方法を示します。 -## 関連項目 +## 参照 [タスク並列ライブラリ (TPL)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md) diff --git a/docs/standard/parallel-programming/walkthrough-creating-a-custom-dataflow-block-type.md b/docs/standard/parallel-programming/walkthrough-creating-a-custom-dataflow-block-type.md index 6e10f6b6860..fbe1cfee078 100644 --- a/docs/standard/parallel-programming/walkthrough-creating-a-custom-dataflow-block-type.md +++ b/docs/standard/parallel-programming/walkthrough-creating-a-custom-dataflow-block-type.md @@ -1,12 +1,8 @@ --- title: "チュートリアル: カスタム データフロー ブロックの型の作成" -ms.custom: ms.date: 03/30/2017 ms.prod: .net -ms.reviewer: -ms.suite: ms.technology: dotnet-standard -ms.tgt_pltfrm: ms.topic: article dev_langs: - csharp @@ -16,62 +12,61 @@ helpviewer_keywords: - TPL dataflow library, creating custom dataflow blocks - dataflow blocks, creating custom in TPL ms.assetid: a6147146-0a6a-4d9b-ab0f-237b3c1ac691 -caps.latest.revision: "8" author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 809b21fa6e1470890011604792d849998dd03ede -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 54882ce5f646e9e790703e0951459a9fceac3bb6 +ms.sourcegitcommit: 6a9030eb5bd0f00e1d144f81958adb195cfb1f6f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/10/2018 --- # チュートリアル: カスタム データフロー ブロックの型の作成 -TPL データ フロー ライブラリは、さまざまな機能を有効にするいくつかのデータ フロー ブロックの型を提供しますが、カスタムのブロックの型を作成することもできます。 このドキュメントでは、カスタム動作を実装するデータフロー ブロックの型を作成する方法について説明します。 +TPL データ フロー ライブラリには、さまざまな機能が有効になるいくつかのデータフロー ブロックの種類が用意されていますが、カスタム ブロックの種類を作成することもできます。 このドキュメントでは、カスタム動作を実装するデータフロー ブロックの種類を作成する方法について説明します。 ## 必須コンポーネント - 読み取り[データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md)このドキュメントを読む前にします。 + [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md)に関するページを読んでからこのドキュメントをお読みください。 + +[!INCLUDE [tpl-install-instructions](../../../includes/tpl-install-instructions.md)] -> [!TIP] -> TPL データ フローのライブラリ ( 名前空間) は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と一緒に配布されません。 インストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**プロジェクト メニューのおよびオンラインで検索から、`Microsoft.Tpl.Dataflow`パッケージ。 +## スライディング ウィンドウのデータフロー ブロックを定義する + 入力値をバッファリングしてからスライディング ウィンドウ方法で出力することを要求するデータフロー アプリケーションを考えてみましょう。 たとえば、入力値が {0, 1 ,2, 3, 4, 5} でウィンドウ サイズが 3 の場合、スライディング ウィンドウのデータフロー ブロックは {0, 1, 2}、{1, 2, 3 }、{2, 3, 4}、および {3, 4, 5} という出力配列になります。 以下のセクションでは、このカスタム動作を実装するデータフロー ブロックの種類を作成する 2 つの方法について説明します。 最初の方法では、 メソッドを使用して オブジェクトと オブジェクトの機能を 1 つの伝達子ブロックに結合します。 2 番目の方法では、 から派生し、既存の機能を組み合わせてカスタム動作を実行するクラスを定義します。 -## スライディング ウィンドウのデータ フロー ブロックを定義します。 - 入力値のバッファリング、スライディング ウィンドウで、出力が必要なデータフロー アプリケーションを検討してください。 たとえば、{0、1、2、3、4, 5} の入力値と 3 つのウィンドウ サイズは、スライディング ウィンドウのデータ フロー ブロックが生成されます {0、1, 2} の出力配列 {1、2、3}、{2、3、4} と {3, 4, 5}。 次のセクションでは、このカスタム動作を実装するデータフロー ブロックの型を作成する 2 つの方法について説明します。 最初の手法を使用して、の機能を結合する方法、オブジェクトおよびオブジェクトを 1 つの伝達子ブロックにします。 派生するクラスを定義する 2 番目の手法カスタム動作を実行する既存の機能を組み合わせたものとします。 +## カプセル化メソッドを使用してスライディング ウィンドウのデータフロー ブロックを定義する + 次の例では、 メソッドを使用して、ターゲットとソースから伝達子ブロックを作成します。 伝達子ブロックを使用すると、ソース ブロックとターゲット ブロックはデータの受信側と送信側として機能します。 -## 使用して、スライディング ウィンドウのデータ フロー ブロックを定義するメソッドをカプセル化 - 次の例では、メソッドをターゲットとソースから伝達子ブロックを作成します。 伝達子ブロックには、ソース ブロックと受信者およびデータの送信者として機能する、ターゲット ブロックが実行できます。 - - この手法は、カスタム データ フロー機能が必要な追加のメソッド、プロパティ、またはフィールドを提供する型を必要としない場合に便利です。 + この手法は、カスタムのデータフロー機能が必要で、追加のメソッド、プロパティ、またはフィールドを提供する種類は必要ない場合に便利です。 [!code-csharp[TPLDataflow_SlidingWindowBlock#1](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_slidingwindowblock/cs/slidingwindowblock.cs#1)] [!code-vb[TPLDataflow_SlidingWindowBlock#1](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_slidingwindowblock/vb/slidingwindowblock.vb#1)] -## スライディング ウィンドウのデータ フロー ブロックを定義する IPropagatorBlock から派生します。 - 次の例は、`SlidingWindowBlock`クラスです。 このクラスから派生ソースとデータのターゲットの両方として動作できるようにします。 前の例のように、`SlidingWindowBlock`クラスは、既存のデータ フロー ブロックの型に基づいて構築されています。 ただし、`SlidingWindowBlock`もクラスで必要なメソッド、 、およびインターフェイスです。 これらのメソッドをすべて転送は、定義済みのデータ フロー ブロックの型のメンバーに動作します。 たとえば、`Post`メソッドへの作業を延期する、`m_target`データ メンバーは、これはでも、オブジェクト。 +## IPropagatorBlock から派生してスライディング ウィンドウのデータフロー ブロックを定義する + `SlidingWindowBlock` クラスの例を次に示します。 このクラスは から派生しているので、データのソースとターゲットの両方として機能することができます。 前の例と同様に、`SlidingWindowBlock` クラスは既存のデータフロー ブロックの種類に基づいて構築されています。 ただし、`SlidingWindowBlock` クラスは、、および インターフェイスで必要なメソッドも実装しています。 これらのメソッドはすべて、処理を定義済みデータフロー ブロックの種類のメンバーに転送します。 たとえば、`Post` メソッドは オブジェクトでもある `m_target` データ メンバーに処理を委任します。 - この手法は、カスタム データ フロー機能を必要としも 追加のメソッド、プロパティ、またはフィールドを提供する型が必要な場合に便利です。 たとえば、`SlidingWindowBlock`からも派生に提供できるように、メソッドです。 `SlidingWindowBlock`クラスが提供することによっても拡張機能を示します、`WindowSize`プロパティで、スライディング ウィンドウ内の要素の数を取得します。 + この手法は、カスタムのデータフロー機能が必要で、追加のメソッド、プロパティ、またはフィールドを提供する種類も必要な場合に便利です。 たとえば、`SlidingWindowBlock` クラスは メソッドと メソッドを提供できるように からも派生しています。 `SlidingWindowBlock` クラスには、`WindowSize` プロパティがあることからもその拡張性がわかります。このプロパティを使用すると、スライディング ウィンドウ内の要素の数を取得できます。 [!code-csharp[TPLDataflow_SlidingWindowBlock#2](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_slidingwindowblock/cs/slidingwindowblock.cs#2)] [!code-vb[TPLDataflow_SlidingWindowBlock#2](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_slidingwindowblock/vb/slidingwindowblock.vb#2)] ## 完全な例 - 次の例は、このチュートリアルのコード全体を示しています。 また、ブロックを書き込みますから読み取り、結果をコンソールに出力するメソッドで、両方スライディング ウィンドウ ブロックを使用する方法も示します。 + 次の例は、このチュートリアルのコード全体を示しています。 また、ブロックに書き込み、そこから読み取り、結果をコンソールに出力するメソッドで、両方のスライディング ウィンドウ ブロックを使用する方法を示します。 [!code-csharp[TPLDataflow_SlidingWindowBlock#100](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_slidingwindowblock/cs/slidingwindowblock.cs#100)] [!code-vb[TPLDataflow_SlidingWindowBlock#100](../../../samples/snippets/visualbasic/VS_Snippets_Misc/tpldataflow_slidingwindowblock/vb/slidingwindowblock.vb#100)] ## コードのコンパイル - コード例をコピーし、Visual Studio プロジェクトに貼り付けるかという名前のファイルに貼り付けます`SlidingWindowBlock.cs`(`SlidingWindowBlock.vb`の[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)]) および Visual Studio コマンド プロンプト ウィンドウで、次のコマンドを実行します。 + コード例をコピーし、Visual Studio プロジェクトに貼り付けるか、`SlidingWindowBlock.cs` ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `SlidingWindowBlock.vb`) という名前のファイルに貼り付けてから、Visual Studio のコマンド プロンプト ウィンドウで次のコマンドを実行します。 [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] - **csc.exe/r:System.Threading.Tasks.Dataflow.dll SlidingWindowBlock.cs** + **csc.exe /r:System.Threading.Tasks.Dataflow.dll SlidingWindowBlock.cs** [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] - **vbc.exe/r:System.Threading.Tasks.Dataflow.dll SlidingWindowBlock.vb** - -## 次の手順 - -## 関連項目 + **vbc.exe /r:System.Threading.Tasks.Dataflow.dll SlidingWindowBlock.vb** + +## 参照 [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/walkthrough-using-batchblock-and-batchedjoinblock-to-improve-efficiency.md b/docs/standard/parallel-programming/walkthrough-using-batchblock-and-batchedjoinblock-to-improve-efficiency.md index c5ad9f9a47f..f089273932c 100644 --- a/docs/standard/parallel-programming/walkthrough-using-batchblock-and-batchedjoinblock-to-improve-efficiency.md +++ b/docs/standard/parallel-programming/walkthrough-using-batchblock-and-batchedjoinblock-to-improve-efficiency.md @@ -1,12 +1,8 @@ --- title: "チュートリアル: BatchBlock および BatchedJoinBlock を使用した効率の向上" -ms.custom: ms.date: 03/30/2017 ms.prod: .net -ms.reviewer: -ms.suite: ms.technology: dotnet-standard -ms.tgt_pltfrm: ms.topic: article dev_langs: - csharp @@ -15,30 +11,31 @@ helpviewer_keywords: - Task Parallel Library, dataflows - TPL dataflow library, improving efficiency ms.assetid: 5beb4983-80c2-4f60-8c51-a07f9fd94cb3 -caps.latest.revision: "8" author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: bc74b4acc5b29395c05e7c8302caefeb51718282 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 49056607d84b48584660ff62bba13147d6aa43ec +ms.sourcegitcommit: 6a9030eb5bd0f00e1d144f81958adb195cfb1f6f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/10/2018 --- # チュートリアル: BatchBlock および BatchedJoinBlock を使用した効率の向上 -TPL データ フロー ライブラリが提供する および クラスを使って、1 つ以上のソースからデータを受信してバッファーに格納し、それを 1 つのコレクションとして反映することができます。 このバッチ メカニズムは、1 つ以上のソースからデータを収集し、複数のデータ要素をバッチとして処理する場合に便利です。 例として、データフローを使ってレコードをデータベースに挿入するアプリケーションについて考えてみましょう。 この操作は、1 つずつ順番にではなく、複数の項目が同時に挿入される場合により効率的となります。 このドキュメントでは、 クラスを使用して、そのようなデータベースの挿入操作を効率的に行う方法について説明します。 また、 クラスを使用して、プログラムでデータベースを読み取る場合に、その結果と発生する例外の両方をキャプチャする方法について説明します。 - -> [!TIP] -> TPL データ フローのライブラリ ( 名前空間) は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と一緒に配布されません。 インストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**プロジェクト メニューのおよびオンラインで検索から、`Microsoft.Tpl.Dataflow`パッケージ。 - +TPL データ フロー ライブラリが提供する および クラスを使って、1 つ以上のソースからデータを受信してバッファーに格納し、それを 1 つのコレクションとして反映することができます。 このバッチ メカニズムは、1 つ以上のソースからデータを収集し、複数のデータ要素をバッチとして処理する場合に便利です。 例として、データフローを使ってレコードをデータベースに挿入するアプリケーションについて考えてみましょう。 この操作は、1 つずつ順番にではなく、複数の項目が同時に挿入される場合により効率的となります。 このドキュメントでは、 クラスを使用して、そのようなデータベースの挿入操作を効率的に行う方法について説明します。 また、 クラスを使用して、プログラムでデータベースを読み取る場合に、その結果と発生する例外の両方をキャプチャする方法について説明します。 + +[!INCLUDE [tpl-install-instructions](../../../includes/tpl-install-instructions.md)] + ## 必須コンポーネント -1. ブロックの結合」セクションを読み、[データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md)このチュートリアルを開始する前に文書化します。 +1. このチュートリアルを開始する前に、ドキュメント「[データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md)」の結合ブロックのセクションを参照してください。 -2. コンピューターに Northwind データベース (Northwind.sdf) のコピーがあることを確認します。 このファイルは通常、フォルダーにプログラム Files%\Microsoft SQL Server Compact Edition\v3.5\Samples\\です。 +2. コンピューターに Northwind データベース (Northwind.sdf) のコピーがあることを確認します。 このファイルは通常、%Program Files%\Microsoft SQL Server Compact Edition\v3.5\Samples\\ フォルダーに置かれています。 > [!IMPORTANT] - > Windows のバージョンによっては、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] が管理者以外のモードで実行されている場合には、Northwind.sdf に接続できません。 Northwind.sdf に接続するには、開始[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)]または[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)]のコマンド プロンプトで、**管理者として実行**モード。 + > Windows のバージョンによっては、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] が管理者以外のモードで実行されている場合には、Northwind.sdf に接続できません。 Northwind.sdf に接続するには、**[管理者として実行]** モードで、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] または [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] のコマンド プロンプトを開始します。 このチュートリアルは、次のセクションで構成されています。 @@ -46,13 +43,13 @@ TPL データ フロー ライブラリが提供する コンソール アプリケーションの作成 -1. [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)]、Visual c# または Visual Basic 作成**コンソール アプリケーション**プロジェクト。 このドキュメントでは、プロジェクトの名前を `DataflowBatchDatabase` とします。 +1. [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] で、Visual C# または Visual Basic の **[コンソール アプリケーション]** プロジェクトを作成します。 このドキュメントでは、プロジェクトの名前を `DataflowBatchDatabase` とします。 2. プロジェクトで、System.Data.SqlServerCe.dll への参照と System.Threading.Tasks.Dataflow.dll への参照を追加します。 @@ -108,7 +105,7 @@ TPL データ フロー ライブラリが提供する クラスを使用して複数の `Employee` オブジェクトをバッファリングしてから、それらのオブジェクトを オブジェクトに送信する点が異なります。 クラスは複数の要素を 1 つのコレクションとして反映させるため、 オブジェクトは `Employee` オブジェクトの配列として動作するように変更されます。 `AddEmployees` メソッドと同様に、`AddEmployeesBatched` は `PostRandomEmployees` メソッドを呼び出して複数の `Employee` オブジェクトをポストしますが、`AddEmployeesBatched` はこれらのオブジェクトを オブジェクトにポストします。 `AddEmployeesBatched`メソッドは、すべての insert 操作を完了するのにも待機します。 + このメソッドは `AddEmployees` に似ていますが、 クラスを使用して複数の `Employee` オブジェクトをバッファリングしてから、それらのオブジェクトを オブジェクトに送信する点が異なります。 クラスは複数の要素を 1 つのコレクションとして反映させるため、 オブジェクトは `Employee` オブジェクトの配列として動作するように変更されます。 `AddEmployees` メソッドと同様に、`AddEmployeesBatched` は `PostRandomEmployees` メソッドを呼び出して複数の `Employee` オブジェクトをポストしますが、`AddEmployeesBatched` はこれらのオブジェクトを オブジェクトにポストします。 また、`AddEmployeesBatched` メソッドは、すべての挿入操作が終了するまで待機もします。 ## バッファリングされた結合を使用した従業員データのデータベースからの読み込み @@ -126,5 +123,5 @@ TPL データ フロー ライブラリが提供する 関連項目 +## 参照 [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md) diff --git a/docs/standard/parallel-programming/walkthrough-using-dataflow-in-a-windows-forms-application.md b/docs/standard/parallel-programming/walkthrough-using-dataflow-in-a-windows-forms-application.md index 2f88c7c4ff8..dcf1d9e88a9 100644 --- a/docs/standard/parallel-programming/walkthrough-using-dataflow-in-a-windows-forms-application.md +++ b/docs/standard/parallel-programming/walkthrough-using-dataflow-in-a-windows-forms-application.md @@ -1,27 +1,25 @@ --- title: "チュートリアル: Windows フォーム アプリケーションでのデータフローの使用" -ms.custom: ms.date: 03/30/2017 ms.prod: .net -ms.reviewer: -ms.suite: ms.technology: dotnet-standard -ms.tgt_pltfrm: ms.topic: article helpviewer_keywords: - TPL dataflow library, in Windows Forms - Task Parallel Library, dataflows - Windows Forms, and TPL ms.assetid: 9c65cdf7-660c-409f-89ea-59d7ec8e127c -caps.latest.revision: "8" author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: d2775cc99020fd99d6e7d79cdf3e1ffcc3219146 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 8c0d44ca7933626c95603ccc81102889ba4c23cb +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 01/19/2018 --- # チュートリアル: Windows フォーム アプリケーションでのデータフローの使用 このドキュメントでは、Windows フォーム アプリケーションでイメージ処理を実行する、データフロー ブロックのネットワークを作成する方法を説明します。 @@ -30,11 +28,9 @@ ms.lasthandoff: 10/18/2017 ## 必須コンポーネント このチュートリアルを開始する前に、「[Dataflow (データフロー)](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md)」をお読みください。 - -> [!TIP] -> TPL データ フローのライブラリ ( 名前空間) は [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と一緒に配布されません。 インストールする、名前空間でプロジェクトを開く[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]、選択**NuGet パッケージの管理**プロジェクト メニューのおよびオンラインで検索から、`Microsoft.Tpl.Dataflow`パッケージ。 - - + +[!INCLUDE [tpl-install-instructions](../../../includes/tpl-install-instructions.md)] + ## セクション このチュートリアルは、次のセクションで構成されています。 @@ -54,13 +50,13 @@ ms.lasthandoff: 10/18/2017 1. [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] で、[!INCLUDE[csprcs](../../../includes/csprcs-md.md)] または Visual Basic **Windows フォーム アプリケーション** プロジェクトを作成します。 このドキュメントでは、プロジェクトの名前を `CompositeImages` とします。 -2. メイン フォーム Form1.cs のフォーム デザイナーで (の Form1.vb [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)])、追加、コントロール。 +2. メイン フォーム Form1.cs ([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] の場合は Form1.vb) のフォーム デザイナーで、 コントロールを追加します。 -3. 追加、コントロールをコントロール。 設定、プロパティをプロパティを**フォルダーを選択**です。 +3. コントロールに コントロールを追加します。 プロパティを に設定し、 プロパティを「**フォルダーの選択**」に設定します。 -4. 1 秒あたりの追加コントロールをコントロール。 設定、プロパティをプロパティを**キャンセル**、およびプロパティを`False`です。 +4. コントロールに 2 つ目の コントロールを追加します。 プロパティを に、 プロパティを「**キャンセル**」に、 プロパティを `False` に設定します。 -5. 追加、メイン フォームにオブジェクト。 プロパティを に設定します。 +5. オブジェクトをメイン フォームに追加します。 プロパティを に設定します。 ## データフロー ネットワークの作成 @@ -91,26 +87,26 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[TPLDataflow_CompositeImages#5](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_compositeimages/cs/compositeimages/form1.cs#5)] > [!NOTE] - > C# バージョンの`CreateCompositeBitmap`メソッドでは、ポインターを使用して効率的に処理を有効にする、オブジェクト。 したがって、[unsafe](~/docs/csharp/language-reference/keywords/unsafe.md) キーワードを使用するために、プロジェクト内の **[アンセーフ コードの許可]** オプションを有効にしてください。 アンセーフ コードを有効にする方法について、[!INCLUDE[csprcs](../../../includes/csprcs-md.md)]プロジェクトで、[ビルド ページ、プロジェクト デザイナー (c#)] を参照してください https://msdn.microsoft.com/library/kb4wyys2)。 + > `CreateCompositeBitmap` メソッドの C# バージョンでは、ポインターを使って、 オブジェクトの効率的な処理を実現します。 したがって、[unsafe](~/docs/csharp/language-reference/keywords/unsafe.md) キーワードを使用するために、プロジェクト内の **[アンセーフ コードの許可]** オプションを有効にしてください。 [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] プロジェクトでアンセーフ コードを有効にする方法については、「[[ビルド] ページ (プロジェクト デザイナー) (C#)](/visualstudio/ide/reference/build-page-project-designer-csharp)」を参照してください。 ネットワークのメンバーを次の表に示します。 |メンバー|型|説明| |------------|----------|-----------------| -|`loadBitmaps`||フォルダー パスを入力として受け取りのコレクションを生成オブジェクトとして出力します。| -|`createCompositeBitmap`||コレクションを受け取ってオブジェクトを入力としてし、出力として複合ビットマップを生成します。| +|`loadBitmaps`||フォルダーのパスを入力として取得し、 オブジェクトのコレクションを出力として生成します。| +|`createCompositeBitmap`|| オブジェクトのコレクションを入力として取得し、複合ビットマップを出力として生成します。| |`displayCompositeBitmap`||フォーム上に複合ビットマップを表示します。| |`operationCancelled`||操作が取り消されたことを示すためにイメージを表示し、ユーザーが別のフォルダーを選択できるようにします。| - この例では、ネットワークを形成するデータフロー ブロックを接続するにはメソッドです。 メソッドには受け取るオーバー ロードされたバージョンが含まれています、ターゲット ブロックが受け入れるか、メッセージを拒否するかどうかを決定するオブジェクト。 このフィルターのしくみによって、メッセージ ブロックは特定の値のみを受信できます。 この例では、ネットワークが、2 つに分岐します。 メイン分岐は、ディスクからイメージを読み込み、複合イメージを作成し、フォームにそのイメージを表示します。 もう 1 つの分岐では、現在の操作がキャンセルされます。 オブジェクトが特定のメッセージを拒否することによって、別の分岐を切り替えるには、メイン分岐に沿ったデータ フロー ブロックを有効にします。 たとえば、ユーザーが操作をキャンセルした場合、データフロー ブロック `createCompositeBitmap` で、`null`([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `Nothing`) が出力として生成されます。 データフロー ブロック `displayCompositeBitmap` では、`null` 入力値が拒否されるため、メッセージが `operationCancelled` に提供されます。 データフロー ブロック `operationCancelled` はすべてのメッセージを受け入れるため、操作が取り消されたことを示すためにイメージを表示します。 + データフロー ブロックを接続してネットワークを形成するため、この例では メソッドを使います。 メソッドには、ターゲット ブロックがメッセージを受け入れるか拒否するかを決定する オブジェクトを受け取るオーバーロード バージョンが含まれます。 このフィルターのしくみによって、メッセージ ブロックは特定の値のみを受信できます。 この例では、ネットワークが、2 つに分岐します。 メイン分岐は、ディスクからイメージを読み込み、複合イメージを作成し、フォームにそのイメージを表示します。 もう 1 つの分岐では、現在の操作がキャンセルされます。 オブジェクトは、メイン分岐に沿ったデータフロー ブロックで、特定のメッセージを拒否することによって、もう 1 つの分岐に切り替えることができます。 たとえば、ユーザーが操作をキャンセルした場合、データフロー ブロック `createCompositeBitmap` で、`null`([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `Nothing`) が出力として生成されます。 データフロー ブロック `displayCompositeBitmap` では、`null` 入力値が拒否されるため、メッセージが `operationCancelled` に提供されます。 データフロー ブロック `operationCancelled` はすべてのメッセージを受け入れるため、操作が取り消されたことを示すためにイメージを表示します。 次の図は、イメージ処理ネットワークを示しています。 ![イメージ処理ネットワーク](../../../docs/standard/parallel-programming/media/dataflowwinforms.png "DataflowWinForms") - `displayCompositeBitmap` と `operationCancelled` のデータフロー ブロックはユーザー インターフェイスで機能するので、これらの操作をユーザー インターフェイス スレッドで実行することが重要です。 これを実現する、構築時に、これらのオブジェクトは各の提供、を持つオブジェクト、プロパティに設定です。 メソッドは、現行の同期コンテキストで作業を実行する オブジェクトを作成します。 ユーザー インターフェイス スレッドで実行される`CreateImageProcessingNetwork` メソッドは、**[フォルダーの選択]** ボタンのハンドラーから呼び出されるため、`displayCompositeBitmap` と`operationCancelled` のデータフロー ブロックのアクションも、ユーザー インターフェイス スレッドで実行されます。 + `displayCompositeBitmap` と `operationCancelled` のデータフロー ブロックはユーザー インターフェイスで機能するので、これらの操作をユーザー インターフェイス スレッドで実行することが重要です。 これを実現するため、構築時にこれらのオブジェクトは プロパティが に設定された オブジェクトを提供します。 メソッドは、現行の同期コンテキストで作業を実行する オブジェクトを作成します。 ユーザー インターフェイス スレッドで実行される`CreateImageProcessingNetwork` メソッドは、**[フォルダーの選択]** ボタンのハンドラーから呼び出されるため、`displayCompositeBitmap` と`operationCancelled` のデータフロー ブロックのアクションも、ユーザー インターフェイス スレッドで実行されます。 - この例の設定ではなく、共有のキャンセル トークンを使用して、プロパティのため、プロパティが完全にデータ フロー ブロックの実行をキャンセルします。 キャンセル トークンによって、この例では、ユーザーが 1 つまたは複数の操作をキャンセルしたときにも、同じデータフロー ネットワークを複数回再利用できます。 使用する例については取り消すには完全にデータ フロー ブロックの実行、次を参照してください。[する方法: データフロー ブロックをキャンセル](../../../docs/standard/parallel-programming/how-to-cancel-a-dataflow-block.md)です。 + プロパティはデータフロー ブロックの実行を完全にキャンセルするので、この例では、 プロパティを設定する代わりに、共有キャンセル トークンを使います。 キャンセル トークンによって、この例では、ユーザーが 1 つまたは複数の操作をキャンセルしたときにも、同じデータフロー ネットワークを複数回再利用できます。 を使ってデータフロー ブロックの実行を完全に取り消す例については、「[方法: データフロー ブロックをキャンセルする](../../../docs/standard/parallel-programming/how-to-cancel-a-dataflow-block.md)」をご覧ください。 ## ユーザー インターフェイスへのデータフロー ネットワークの接続 @@ -118,15 +114,15 @@ ms.lasthandoff: 10/18/2017 #### ユーザー インターフェイスにデータフロー ネットワークを接続するには -1. メイン フォームのフォーム デザイナーでのイベント ハンドラーを作成、イベントを**フォルダーを選択**ボタンをクリックします。 +1. メイン フォームのフォーム デザイナーで、**[フォルダーの選択]** ボタンの イベントのイベント ハンドラーを作成します。 -2. 実装、イベントを**フォルダーを選択**ボタンをクリックします。 +2. **[フォルダーの選択]** ボタンの イベントを実装します。 [!code-csharp[TPLDataflow_CompositeImages#6](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_compositeimages/cs/compositeimages/form1.cs#6)] -3. メイン フォームのフォーム デザイナーでのイベント ハンドラーを作成、イベントを**キャンセル**ボタンをクリックします。 +3. メイン フォームのフォーム デザイナーで、**[キャンセル]** ボタンの イベントのイベント ハンドラーを作成します。 -4. 実装、イベントを**キャンセル**ボタンをクリックします。 +4. **[キャンセル]** ボタンの イベントを実装します。 [!code-csharp[TPLDataflow_CompositeImages#7](../../../samples/snippets/csharp/VS_Snippets_Misc/tpldataflow_compositeimages/cs/compositeimages/form1.cs#7)] @@ -139,8 +135,6 @@ ms.lasthandoff: 10/18/2017 次の図は、一般的な \Sample Pictures\ フォルダーの典型的な出力を示しています。 ![Windows フォーム アプリケーション](../../../docs/standard/parallel-programming/media/tpldataflow-compositeimages.gif "TPLDataflow_CompositeImages") - -## 次の手順 - -## 関連項目 + +## 参照 [データフロー](../../../docs/standard/parallel-programming/dataflow-task-parallel-library.md) diff --git a/docs/standard/portability-analyzer.md b/docs/standard/portability-analyzer.md new file mode 100644 index 00000000000..2ac95d5566b --- /dev/null +++ b/docs/standard/portability-analyzer.md @@ -0,0 +1,55 @@ +--- +title: .NET Portability Analyzer - .NET +description: ".NET Portability Analyzer ツールを使って、さまざまな .NET の実装 (.NET Core、.NET Standard、UWP、Xamarin など) の間でのコードの移植性を評価する方法について説明します。" +keywords: .NET, .NET Core +author: blackdwarf +ms.author: mairaw +ms.date: 07/26/2017 +ms.topic: article +ms.prod: .net +ms.technology: dotnet-standard +ms.devlang: dotnet +ms.assetid: 0375250f-5704-4993-a6d5-e21c499cea1e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b4e19734bc1b7f394864a44ca0489c669cd63a61 +ms.sourcegitcommit: f28752eab00d2bd97e971542c0f49ce63cfbc239 +ms.translationtype: HT +ms.contentlocale: ja-JP +ms.lasthandoff: 01/31/2018 +--- +# .NET Portability Analyzer + +ライブラリをマルチプラットフォーム対応にしたい場合や、 アプリケーションで他の .NET の実装とプロファイル (.NET Core、.NET Standard、UWP、Xamarin for iOS/Android/Mac など) との互換性を確保するのに必要な作業量を知りたい場合は、 [.NET Portability Analyzer](http://go.microsoft.com/fwlink/?LinkID=507467) が役立ちます。このツールを使用すると、アセンブリを分析して、プログラムが .NET 実装全体でどの程度柔軟な構造になっているかについて詳細なレポートを生成することができます。 Portability Analyzer は、Visual Studio 拡張機能のコンソール アプリとして提供されます。 + +## 新しいターゲット + +* [.NET Core](https://dotnetfoundation.org/net-core): モジュール型の設計で、side-by-side を採用しており、クロスプラットフォームのシナリオを対象としています。 side-by-side 機能により、他のアプリに影響を与えることなく新しい .NET Core バージョンを導入することができます。 +* [ASP.NET Core](https://dotnetfoundation.org/asp-net-core): .NET Core 上に構築された最新の Web フレームワークであり、開発者に .NET Core と同じメリットを提供します。 +* [ユニバーサル Windows プラットフォーム](https://blogs.msdn.microsoft.com/dotnet/2014/04/24/net-native-performance): .NET Native の静的コンパイルを使用することで、x64 および ARM マシンで動作する Windows ストア アプリのパフォーマンスが向上します。 +* .NET Core + プラットフォーム拡張機能: .NET Core API と、WCF、ASP.NET Core、FSharp、Azure などの .NET エコシステム内のその他の API が含まれます。 +* .NET Standard + プラットフォーム拡張機能: .NET Standard API と、WCF、ASP.NET Core、FSharp、および Azure などの .NET エコシステム内のその他の API が含まれます。 + +## Portability Analyzer の使用方法 + +.NET Portability Analyzer を使用するには、[Visual Studio ギャラリー](http://go.microsoft.com/fwlink/?LinkID=507467)から拡張機能をダウンロードし、インストールする必要があります。 これは、Visual Studio 2015 と Visual Studio 2017 で機能します。 **[分析]**、 > **[Portability Analyzer Settings (Portability Analyzer の設定)]** の順に選択して構成し、ターゲット プラットフォームを選択できます。 + +![Portability のスクリーンショット](./media/portability-analyzer/portability-screenshot.png) + +プロジェクト全体を分析するには、**ソリューション エクスプローラー**でプロジェクトを右クリックし、**[Analyze Assembly Portability]** (アセンブリの移植性を分析) を選択します。 または、**[分析]** メニューで **[Analyze Assembly Portability]** (アセンブリの移植性を分析) を選択します。 そこから、プロジェクトの実行可能ファイルまたは DLL を選択します。 + +![移植性ソリューション エクスプローラー](./media/portability-analyzer/portability-solution-explorer.png) + +分析を実行すると、.NET 移植性レポートが表示されます。 ターゲット プラットフォームでサポートされていない型のみが一覧に表示され、**[エラー一覧]** の **[メッセージ]** タブで、推奨事項を確認できます。 また、**[メッセージ]** タブから問題のある領域に直接移動することもできます。 + +![移植性レポート](./media/portability-analyzer/portability-report.png) + +Visual Studio を使用しない場合は、 コマンド プロンプトから Portability Analyzer を使用することもできます。 [API Portability Analyzer](http://www.microsoft.com/download/details.aspx?id=42678) をダウンロードします。 + +* 現在のディレクトリを分析するには、次のコマンドを入力します。`\...\ApiPort.exe analyze -f .` +* 特定の .dll ファイルの一覧を分析するには、次のコマンドを入力します。`\...\ApiPort.exe analyze -f first.dll -f second.dll -f third.dll` + +.NET 移植性レポートは、Excel ファイル (*.xlsx*) として現在のディレクトリに保存されます。 Excel のブックの **[詳細]** タブに詳細情報が記載されています。 + +.NET Portability Analyzer の詳細については、[GitHub ドキュメント](https://github.com/Microsoft/dotnet-apiport#documentation)にアクセスし、Channel 9 動画の「[A Brief Look at the .NET Portability Analyzer](https://channel9.msdn.com/Blogs/Seth-Juarez/A-Brief-Look-at-the-NET-Portability-Analyzer)」 (.NET Portability Analyzer の概要) をご覧ください。 diff --git a/docs/standard/threading/autoresetevent.md b/docs/standard/threading/autoresetevent.md index 712a6007e65..396a61e671f 100644 --- a/docs/standard/threading/autoresetevent.md +++ b/docs/standard/threading/autoresetevent.md @@ -12,24 +12,27 @@ helpviewer_keywords: - threading [.NET Framework], AutoResetEvent class - AutoResetEvent class ms.assetid: 6d39c48d-6b37-4a9b-8631-f2924cfd9c18 -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 69d16e8c6491b4c66ab5a5452762e73172ebbb77 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 71933d0be804fdf68b0dc602902343f2d88b8c82 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # AutoResetEvent -クラスはシグナルを受け取ると、1 つの待機中のスレッドを解放した後に自動的にリセットするローカルの待機ハンドルのイベントを表します。 このクラスは、その基本クラスの特殊なケースを表しますです。 自動リセット イベントの使用方法と機能については、[EventWaitHandle](../../../docs/standard/threading/eventwaithandle.md) の概念に関する文書を参照してください。 + クラスは、単一の待機スレッドを解放した後、シグナル状態になると自動的にリセットするローカル待機ハンドル イベントを表します。 このクラスは、その基底クラス の特殊なケースを表します。 自動リセット イベントの使用方法と機能については、[EventWaitHandle](../../../docs/standard/threading/eventwaithandle.md) の概念に関する文書を参照してください。 - オブジェクトが自動的にリセットを非シグナル、システムによって 1 つの待機中のスレッドが解放された後です。 待機しているスレッドがない場合でも、イベント オブジェクトの状態はシグナルのままです。 Win32 に対応する`CreateEvent`を呼び出すと、指定する`false`の`bManualReset`引数。 + オブジェクトは、単一の待機スレッドが解放された後、システムによって自動的に非シグナルにリセットされます。 待機しているスレッドがない場合でも、イベント オブジェクトの状態はシグナルのままです。 は、`bManualReset` 引数に対して `false` を指定する、Win32 `CreateEvent` 呼び出しに対応します。 - 使用する例についてはを参照してください[モニター](http://msdn.microsoft.com/library/33fe4aef-b44b-42fd-9e72-c908e39e75db)です。 + の使用例については、「[Monitor クラス](http://msdn.microsoft.com/library/33fe4aef-b44b-42fd-9e72-c908e39e75db)」を参照してください。 -## 関連項目 +## 参照 [EventWaitHandle、AutoResetEvent、CountdownEvent、ManualResetEvent](../../../docs/standard/threading/eventwaithandle-autoresetevent-countdownevent-manualresetevent.md) diff --git a/docs/standard/threading/barrier.md b/docs/standard/threading/barrier.md index 11d58799027..d0af4e1ebaa 100644 --- a/docs/standard/threading/barrier.md +++ b/docs/standard/threading/barrier.md @@ -11,30 +11,34 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: synchronization primitives, Barrier +helpviewer_keywords: +- synchronization primitives, Barrier ms.assetid: 613a8bc7-6a28-4795-bd6c-1abd9050478f -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: a8111cc9f2798ff96be8b128f22a75d21b441178 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 392e975f6bf566c2ba36290940eb0daee03f004f +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # バリア (.NET Framework) -A*バリア*ユーザー定義の同期プリミティブを複数のスレッドを有効にする (と呼ばれる*参加者*) フェーズで、アルゴリズムに同時に動作します。 各参加要素は、コードのバリア ポイントに到達するまで実行されます。 バリアは、作業の 1 つのフェーズの終了を表します。 参加要素は、バリアに到達すると、すべての参加要素が同じバリアに到達するまでブロックされます。 すべての参加要素がバリアに到達した後、必要に応じて、フェーズ後の処理を呼び出すことができます。 フェーズ後の処理を使用すると、他のすべてのスレッドがブロックされた状態のまま 1 つのスレッドでアクションを実行できます。 アクションが実行された後、参加要素のブロックはすべて解除されます。 +*バリア* とは、複数のスレッド (*参加要素* と呼ばれる) が段階的に 1 つのアルゴリズムで同時に動作できるようにするユーザー定義の同期プリミティブです。 各参加要素は、コードのバリア ポイントに到達するまで実行されます。 バリアは、作業の 1 つのフェーズの終了を表します。 参加要素は、バリアに到達すると、すべての参加要素が同じバリアに到達するまでブロックされます。 すべての参加要素がバリアに到達した後、必要に応じて、フェーズ後の処理を呼び出すことができます。 フェーズ後の処理を使用すると、他のすべてのスレッドがブロックされた状態のまま 1 つのスレッドでアクションを実行できます。 アクションが実行された後、参加要素のブロックはすべて解除されます。 基本的なバリア パターンを次のコード スニペットに示します。 [!code-csharp[CDS_Barrier#02](../../../samples/snippets/csharp/VS_Snippets_Misc/cds_barrier/cs/barrier.cs#02)] [!code-vb[CDS_Barrier#02](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_barrier/vb/barrier_vb.vb#02)] - 完全な例では、次を参照してください。[する方法: バリアの同時実行の操作を同期](../../../docs/standard/threading/how-to-synchronize-concurrent-operations-with-a-barrier.md)です。 + コード例全体については、「[方法: バリアを使用して同時実行操作を同期する](../../../docs/standard/threading/how-to-synchronize-concurrent-operations-with-a-barrier.md)」を参照してください。 ## 参加要素の追加と削除 - を作成するときは、参加要素の数を指定します。 また、参加要素は、いつでも動的に追加または削除できます。 たとえば、1 人の参加者は、その一部の問題を解決する場合は、結果、実行を停止し、そのスレッドを呼び出すを格納できますバリアの参加要素の数をデクリメントします。 を呼び出して参加要素を追加すると、戻り値によって現在のフェーズ数が示されます。この値は、追加した新しい参加要素の作業を初期化するのに役立つことがあります。 + を作成するときは、参加要素の数を指定します。 また、参加要素は、いつでも動的に追加または削除できます。 たとえば、1 つの参加要素がその処理を終えた場合に、結果を保存し、そのスレッドの実行を停止してから、 を呼び出してバリアの参加要素の数を 1 つ減らすことができます。 を呼び出して参加要素を追加すると、戻り値によって現在のフェーズ数が示されます。この値は、追加した新しい参加要素の作業を初期化するのに役立つことがあります。 ## 破損したバリア いずれかの参加要素がバリアに到達できない場合、デッドロックが発生することがあります。 このようなデッドロックを避けるには、 メソッドのオーバーロードを使用して、タイムアウト期間とキャンセル トークンを指定します。 すべての参加要素は、次のフェーズに進む前に、これらのオーバーロードから返されるブール値をチェックできます。 @@ -55,6 +59,6 @@ A*バリア*ユーザー定義の同期プリミティブを複数のスレッ 詳細については、「[継続タスクを使用したタスクの連結](../../../docs/standard/parallel-programming/chaining-tasks-by-using-continuation-tasks.md)」を参照してください。 -## 関連項目 +## 参照 [スレッド処理オブジェクトと機能](../../../docs/standard/threading/threading-objects-and-features.md) [方法: バリアを使用して同時実行操作を同期する](../../../docs/standard/threading/how-to-synchronize-concurrent-operations-with-a-barrier.md) diff --git a/docs/standard/threading/canceling-threads-cooperatively.md b/docs/standard/threading/canceling-threads-cooperatively.md index 7f361749cbd..c6d515dc7ae 100644 --- a/docs/standard/threading/canceling-threads-cooperatively.md +++ b/docs/standard/threading/canceling-threads-cooperatively.md @@ -11,23 +11,27 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: threads, cancellation +helpviewer_keywords: +- threads, cancellation ms.assetid: d2d6d5fd-e263-4fa0-847b-2fc3e0d82337 -caps.latest.revision: "6" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 482f48b347af1a4f76231abcb15abc2f4dba168b -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 334cbcf8b4a888dbac5962c0fd668673e15e0e29 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # スレッドの協調的な取り消し -[!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]より前のバージョンの .NET Framework には、開始されたスレッドを協調的に取り消す手段は組み込まれていませんでした。 ただし、 [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]、それらを使用するには [キャンセル] を同様に、スレッドを取り消すキャンセル トークンを使用できますオブジェクトや PLINQ クエリ。 クラスはキャンセル トークンの組み込みサポートを提供しないを使用して、トークンをスレッド プロシージャに渡すことができます、を受け取るコンス トラクター、を委任します。 この方法を次の例に示します。 +[!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]より前のバージョンの .NET Framework には、開始されたスレッドを協調的に取り消す手段は組み込まれていませんでした。 ただし、[!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] では、 オブジェクトや PLINQ クエリを取り消す場合と同様に、取り消しトークンを使用してスレッドを取り消すことができます。 クラスには取り消しトークンのサポートは組み込まれていませんが、 デリゲートを受け取る コンストラクターを使用して、トークンをスレッド プロシージャに渡すことができます。 この方法を次の例に示します。 [!code-csharp[Cancellation#14](../../../samples/snippets/csharp/VS_Snippets_Misc/cancellation/cs/CooperativeThreads.cs#14)] [!code-vb[Cancellation#14](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cancellation/vb/CooperativeThreads.vb#14)] -## 関連項目 +## 参照 [スレッドの使用とスレッド処理](../../../docs/standard/threading/using-threads-and-threading.md) diff --git a/docs/standard/threading/cancellation-in-managed-threads.md b/docs/standard/threading/cancellation-in-managed-threads.md index 5ea0521b9f0..e924ccfd2ad 100644 --- a/docs/standard/threading/cancellation-in-managed-threads.md +++ b/docs/standard/threading/cancellation-in-managed-threads.md @@ -11,20 +11,24 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: cancellation in .NET, overview +helpviewer_keywords: +- cancellation in .NET, overview ms.assetid: eea11fe5-d8b0-4314-bb5d-8a58166fb1c3 -caps.latest.revision: "23" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 819f564b93d54c41b879fbfcb20997a8abdebc6c -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 5407beba999ede6131adbc17f56d139396429597 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # マネージ スレッドのキャンセル -[!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降で、非同期操作または長時間にわたる同期操作に対する連携によるキャンセルのための統一されたモデルが .NET Framework に導入されました。 このモデルは、キャンセル トークンと呼ばれる軽量のオブジェクトに基づいています。 新しいスレッドまたは新しいタスクの作成などによって 1 つ以上のキャンセル可能な操作を呼び出すオブジェクトは、各操作にトークンを渡します。 次いで、個々の操作は他の操作にトークンのコピーを渡すことができます。 その後、トークンを作成したオブジェクトは、操作が実行している処理を停止するように、そのトークンを使用してその操作に要求できます。 要求側のオブジェクトのみがキャンセル要求を発行し、各リスナーは、要求を確認しながらおよび適切なと適切な方法で対処をします。 +[!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降で、非同期操作または長時間にわたる同期操作に対する連携によるキャンセルのための統一されたモデルが .NET Framework に導入されました。 このモデルは、キャンセル トークンと呼ばれる軽量のオブジェクトに基づいています。 新しいスレッドまたは新しいタスクの作成などによって 1 つ以上のキャンセル可能な操作を呼び出すオブジェクトは、各操作にトークンを渡します。 次いで、個々の操作は他の操作にトークンのコピーを渡すことができます。 その後、トークンを作成したオブジェクトは、操作が実行している処理を停止するように、そのトークンを使用してその操作に要求できます。 キャンセル要求は、要求側のオブジェクトからのみ発行できます。各リスナーは要求を確認し、適切な時に定期的にその要求に応答する必要があります。 連携によるキャンセル処理モデルを実装するための一般的なパターンは次のとおりです。 @@ -41,7 +45,7 @@ ms.lasthandoff: 10/18/2017 トークンのソースとそのトークンのすべてのコピーの間の関係を次の図に示します。 - ![CancellationTokenSource とキャンセル トークン](../../../docs/standard/threading/media/vs-cancellationtoken.png "VS_CancellationToken") + ![CancellationTokenSource とキャンセル トークン ](../../../docs/standard/threading/media/vs-cancellationtoken.png "VS_CancellationToken") 新しいキャンセル モデルによって、キャンセルに対応したアプリケーションやライブラリの作成が簡単になりました。このモデルでは次の機能がサポートされます。 @@ -51,7 +55,7 @@ ms.lasthandoff: 10/18/2017 - 要求側のオブジェクトは、1 回のメソッド呼び出しでトークンのすべてのコピーにキャンセル要求を発行できます。 -- リスナーをリッスンできる複数のトークンを同時に 1 つに結合して*リンク トークン*です。 +- リスナーは、複数のトークンを 1 つの*リンク トークン*に結合して同時にリッスンできます。 - ライブラリ コードからのキャンセル要求をユーザー コードで確認して応答したり、ユーザー コードからのキャンセル要求をライブラリ コードで確認して応答したりすることができます。 @@ -66,13 +70,13 @@ ms.lasthandoff: 10/18/2017 ||1 つ以上のリスナーに渡される軽量な値型で、通常はメソッド パラメーターとして渡されます。 リスナーはポーリング、コールバック、または待機ハンドルによってトークンの `IsCancellationRequested` プロパティの値を監視します。| ||この例外のコンストラクターのオーバーロードで、 をパラメーターとして受け入れます。 リスナーは必要に応じてこの例外をスローすることができます。この例外により、キャンセルのソースを確認し、キャンセル要求にそのリスナーが応答したことを他のリスナーに通知します。| - この新しいキャンセル モデルに統合されて、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)]でいくつかの種類。 最も重要なものはです。 すべての新しいライブラリとアプリケーション コードには、この新しいキャンセル モデルを使用することをお勧めします。 + この新しいキャンセル モデルは、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] のいくつかの型に統合されています。 最も重要なものは、 です。 新しいライブラリおよびアプリケーション コードでは、すべてこの新しいキャンセル モデルを使用することをお勧めします。 ## コード例 次の例では、要求側のオブジェクトで オブジェクトを作成した後、その プロパティをキャンセル可能な操作に渡します。 要求を受け取る側の操作では、ポーリングによってトークンの プロパティの値を監視します。 値が `true` になったら、リスナーは適切な方法で終了できます。 この例では、メソッドの終了だけを行っています。多くの場合はこの処理だけで十分です。 > [!NOTE] -> この例では、新しいキャンセル フレームワークが従来の API と互換性があることを示すために、 メソッドを使用しています。 例では、新しいについては、優先を入力しを参照してください[する方法: タスクとその子を取り消す](../../../docs/standard/parallel-programming/how-to-cancel-a-task-and-its-children.md)です。 +> この例では、新しいキャンセル フレームワークが従来の API と互換性があることを示すために、 メソッドを使用しています。 推奨される新しい 型を使用した例については、「[方法: タスクとその子を取り消す](../../../docs/standard/parallel-programming/how-to-cancel-a-task-and-its-children.md)」を参照してください。 [!code-csharp[Cancellation#1](../../../samples/snippets/csharp/VS_Snippets_Misc/cancellation/cs/cancellationex1.cs#1)] [!code-vb[Cancellation#1](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cancellation/vb/cancellationex1.vb#1)] @@ -92,7 +96,7 @@ ms.lasthandoff: 10/18/2017 ただし、より複雑なケースでは、キャンセルが発生したことをユーザー デリゲートからライブラリ コードに通知する必要がある場合があります。 そのような場合、操作を終了するための正しい方法はユーザー デリゲートから メソッドを呼び出すことです。これにより、 がスローされます。 ライブラリ コードでは、ユーザー デリゲートのスレッドでこの例外をキャッチし、例外のトークンを調べて、この例外が連携によるキャンセルを示すのか、それ以外の例外的な状況を示すのかを判断できます。 - クラスはこの方法で を処理します。 詳細については、「 [Task Cancellation](../../../docs/standard/parallel-programming/task-cancellation.md)」を参照してください。 + クラスはこの方法で を処理します。 詳細については、「[タスクのキャンセル](../../../docs/standard/parallel-programming/task-cancellation.md)」をご覧ください。 ### ポーリングによるリッスン ループや再帰を伴う長時間にわたる計算では、 プロパティの値を定期的にポーリングすることによってキャンセル要求をリッスンできます。 その値が `true` の場合、メソッドはできるだけ早くクリーンアップを行って終了する必要があります。 最適なポーリング間隔はアプリケーションの種類によって異なります。 プログラムごとに、最適なポーリング間隔を開発者が決定します。 ポーリング自体がパフォーマンスに大きく影響することはありません。 ポーリングを行う方法の 1 つの例を次に示します。 @@ -100,12 +104,12 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Cancellation#3](../../../samples/snippets/csharp/VS_Snippets_Misc/cancellation/cs/cancellationex11.cs#3)] [!code-vb[Cancellation#3](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cancellation/vb/cancellationex11.vb#3)] - 完全な例では、次を参照してください。[する方法: ポーリングによりキャンセル要求をリッスン](../../../docs/standard/threading/how-to-listen-for-cancellation-requests-by-polling.md)です。 + さらに完全に近い例については、「[方法: ポーリングによりキャンセル要求を待機する](../../../docs/standard/threading/how-to-listen-for-cancellation-requests-by-polling.md)」を参照してください。 ### コールバックの登録によるリッスン 操作によっては、キャンセル トークンの値を定期的に確認できないことによりブロックされる場合があります。 そのような場合は、キャンセル要求を受け取ったときにメソッドのブロックを解除するコールバック メソッドを登録できます。 - メソッドを返します、この用途専用で使用されるオブジェクト。 メソッドを使用して非同期 Web 要求を取り消す方法を次の例に示します。 + メソッドは、特にこの目的のために使用される オブジェクトを返します。 メソッドを使用して非同期 Web 要求を取り消す方法を次の例に示します。 [!code-csharp[Cancellation#4](../../../samples/snippets/csharp/VS_Snippets_Misc/cancellation/cs/cancellationex4.cs#4)] [!code-vb[Cancellation#4](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cancellation/vb/cancellationex4.vb#4)] @@ -120,7 +124,7 @@ ms.lasthandoff: 10/18/2017 - コールバックでは、手動によるスレッド処理を実行したり、 を使用したりしないでください。 特定のスレッドでコールバックを実行する必要がある場合は、 コンストラクターを使用します。これにより、ターゲットの syncContext がアクティブな であることを指定できます。 コールバックで手動によるスレッド処理を実行すると、デッドロックが発生する可能性があります。 - 完全な例では、次を参照してください。[する方法: キャンセル要求を行うためのコールバックの登録](../../../docs/standard/threading/how-to-register-callbacks-for-cancellation-requests.md)です。 + さらに完全に近い例については、「[方法: キャンセル要求のコールバックを登録する](../../../docs/standard/threading/how-to-register-callbacks-for-cancellation-requests.md)」を参照してください。 ### 待機ハンドルを使用したリッスン などの同期プリミティブを待機している間、キャンセル可能な操作をブロックできる場合は、 プロパティを使用してその操作がイベントとキャンセル要求の両方を待機するようにできます。 キャンセル トークンの待機ハンドルは、キャンセル要求への応答としてシグナル状態になります。メソッドは メソッドの戻り値を使用して、キャンセル トークンがシグナル状態であったかどうかを判断できます。 操作はその後、状況に合わせて、そのまま終了するか、 をスローします。 @@ -128,12 +132,12 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Cancellation#5](../../../samples/snippets/csharp/VS_Snippets_Misc/cancellation/cs/cancellationex9.cs#5)] [!code-vb[Cancellation#5](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cancellation/vb/cancellationex9.vb#5)] - [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] を対象とする新しいコードでは、 はどちらも、`Wait` メソッドで新しいキャンセル フレームワークをサポートしています。 渡すことができます、 、メソッドにイベントが起動され、スロー、キャンセルが要求されると、および、です。 + [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] を対象とする新しいコードでは、 はどちらも、`Wait` メソッドで新しいキャンセル フレームワークをサポートしています。 メソッドに を渡すことができ、キャンセルが要求されると、イベントが起動して がスローされます。 [!code-csharp[Cancellation#6](../../../samples/snippets/csharp/VS_Snippets_Misc/cancellation/cs/cancellationex10.cs#6)] [!code-vb[Cancellation#6](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cancellation/vb/cancellationex10.vb#6)] - 完全な例では、次を参照してください。[する方法: キャンセル要求がある待機が処理されるのをリッスン](../../../docs/standard/threading/how-to-listen-for-cancellation-requests-that-have-wait-handles.md)です。 + さらに完全に近い例については、「[方法: 待機ハンドルがあるキャンセル要求を待機する](../../../docs/standard/threading/how-to-listen-for-cancellation-requests-that-have-wait-handles.md)」を参照してください。 ### 同時に複数のトークンをリッスンする リスナーでは、複数のキャンセル トークンを同時にリッスンしなければならない場合もあります。 たとえば、キャンセル可能な操作で、メソッド パラメーターの引数として外部から渡されるトークンのほかに、内部のキャンセル トークンも監視する必要がある場合などです。 これを行うには、複数のトークンを 1 つのトークンに結合できるリンク トークン ソースを作成します。次に例を示します。 @@ -141,18 +145,18 @@ ms.lasthandoff: 10/18/2017 [!code-csharp[Cancellation#7](../../../samples/snippets/csharp/VS_Snippets_Misc/cancellation/cs/cancellationex13.cs#7)] [!code-vb[Cancellation#7](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cancellation/vb/cancellationex13.vb#7)] - 処理の終了後にリンク トークン ソースに対して `Dispose` を呼び出す必要があることに注意してください。 完全な例では、次を参照してください。[する方法: 複数のキャンセル要求をリッスン](../../../docs/standard/threading/how-to-listen-for-multiple-cancellation-requests.md)です。 + 処理の終了後にリンク トークン ソースに対して `Dispose` を呼び出す必要があることに注意してください。 さらに完全に近い例については、「[方法: 複数のキャンセル要求を待機する](../../../docs/standard/threading/how-to-listen-for-multiple-cancellation-requests.md)」を参照してください。 ## ライブラリ コードとユーザー コードの連携 統合キャンセル フレームワークでは、ライブラリ コードとユーザー コードを連携させ、どちらのコードからも他方のコードを取り消せるようにすることができます。 円滑な連携のためには、それぞれで以下のガイドラインに従う必要があります。 - ライブラリ コードでキャンセル可能な操作を提供する場合は、ユーザー コードからキャンセルを要求できるように、外部のキャンセル トークンを受け入れるパブリック メソッドも提供します。 -- ライブラリ コードは、ユーザー コードを呼び出すの場合、ライブラリ コードは、Externaltoken を解釈する必要があります*連携によるキャンセル*、およびエラーの例外とは限らないです。 +- ライブラリ コードからユーザー コードを呼び出す場合は、ライブラリ コードで OperationCanceledException(externalToken) を常にエラー例外として解釈するのではなく、*連携によるキャンセル*としても解釈するようにします。 - ユーザー デリゲートでは、ライブラリ コードからのキャンセル要求に定期的に応答するようにします。 - および は、これらのガイドラインに従ったクラスの例です。 詳細については、次を参照してください。[タスクのキャンセル](../../../docs/standard/parallel-programming/task-cancellation.md)と[する方法: PLINQ クエリを取り消す](../../../docs/standard/parallel-programming/how-to-cancel-a-plinq-query.md)です。 + および は、これらのガイドラインに従ったクラスの例です。 詳細については、「[タスクのキャンセル](../../../docs/standard/parallel-programming/task-cancellation.md)」と「[方法: PLINQ クエリを取り消す](../../../docs/standard/parallel-programming/how-to-cancel-a-plinq-query.md)」を参照してください。 -## 関連項目 +## 参照 [マネージ スレッド処理の基本](../../../docs/standard/threading/managed-threading-basics.md) diff --git a/docs/standard/threading/countdownevent.md b/docs/standard/threading/countdownevent.md index 4e395be14b2..caa2a0e6db2 100644 --- a/docs/standard/threading/countdownevent.md +++ b/docs/standard/threading/countdownevent.md @@ -11,47 +11,51 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: synchronization primitives, CountdownEvent +helpviewer_keywords: +- synchronization primitives, CountdownEvent ms.assetid: eec3812a-e20f-4ecd-bfef-6921d508b708 -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 9f953f6477abf1f4e0d6aaf79e67005172ff1144 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 144bcde6c4c8fb227773fe613da8445f100ce66d +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # CountdownEvent -待機中のスレッドのブロックが解除された後に同期プリミティブの通知回数だけです。 シナリオではそれ以外の場合があるを使用するよう設計されていますが、またはと手動でイベントを通知する前に、変数をデクリメントします。 たとえば、分岐および結合のシナリオでのみ作成できます、 5 のシグナルのカウントを持つと 5 つの作業項目、スレッドの開始をプールし、作業項目の各呼び出しがある完了時にします。 各呼び出し信号カウントを 1 だけデクリメントします。 メイン スレッドへの呼び出しでシグナル カウントがゼロになるまでブロックします。 + は同期プリミティブであり、特定の回数シグナル状態になった後、待機スレッドのブロックを解除します。 は、通常は または を使用して、イベントをシグナル化する前に変数を手動でデクリメントする必要があるシナリオ用に設計されています。 たとえば、fork/join シナリオでは、単にシグナル数 5 の を作成し、スレッド プールで 5 つの作業項目を開始し、完了時に各作業項目呼び出し を使用できます。 を呼び出すたびに、シグナル数が 1 だけデクリメントします。 メイン スレッドでは、シグナル数がゼロになるまで、 の呼び出しがブロックされます。 > [!NOTE] -> 従来の .NET Framework の同期 Api と対話する必要はありませんコード、使用を検討してオブジェクトまたは分岐と結合の並列処理の表現をさらに簡単なアプローチのメソッドです。 +> レガシ .NET Framework の同期 API と対話する必要がないコードの場合は、fork と join の並列実行をさらに簡単に表すために オブジェクトまたは メソッドの使用を検討してください。 - これらの追加機能があります。 + には以下の追加機能があります。 -- キャンセル トークンを使用して、待機操作をキャンセルできます。 +- 取り消しトークンを使用して、待機操作を取り消すことができます。 -- インスタンスが作成された後、その信号カウントをインクリメントできます。 +- インスタンスの作成後に、シグナル数をインクリメントできます。 -- インスタンスが後に再利用できる呼び出しで返されるが、メソッドです。 +- メソッドを呼び出すことで が返された後、インスタンスを再利用できます。 -- インスタンスを公開、他の .NET Framework の同期 Api と統合するためなどです。 +- インスタンスは、 などの他の .NET Framework の同期 API との統合のために を公開します。 ## 基本的な使用方法 - 次の例で使用する方法、作業項目です。 + 作業項目を使用する方法を次の例に示します。 [!code-csharp[CDS_CountdownEvent#01](../../../samples/snippets/csharp/VS_Snippets_Misc/cds_countdownevent/cs/countdownevent.cs#01)] [!code-vb[CDS_CountdownEvent#01](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_countdownevent/vb/module1.vb#01)] -## キャンセルを CountdownEvent - 次の例での待機操作をキャンセルする方法を示しています。キャンセル トークンを使用しています。 基本的なパターンが統一されたキャンセルで導入されたのモデルを採用[!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]です。 詳細については、次を参照してください。[マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md)です。 +## CountdownEvent と Cancellation + 次の例は、取り消しトークンを使用して、 での待機操作を取り消す方法を示しています。 基本的なパターンでは、[!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] で導入された、統合取り消しのモデルに従います。 詳細については、「[マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md)」を参照してください。 [!code-csharp[CDS_CountdownEvent#02](../../../samples/snippets/csharp/VS_Snippets_Misc/cds_countdownevent/cs/countdownevent.cs#02)] [!code-vb[CDS_CountdownEvent#02](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_countdownevent/vb/canceleventwait.vb#02)] - 待ち操作がそのシグナル状態のスレッドをキャンセルしていないことに注意してください。 通常、取り消しは、論理操作に適用され、待機を同期しているすべての作業項目と同様に、イベントで待機していることを含めることができます。 この例では、各作業項目は、同じキャンセル トークンのコピーには、キャンセル要求に応答できるようにします。 + 待機操作では、それをシグナル化するスレッドが取り消されないことに注意してください。 通常、取り消しは論理操作に適用され、待機が同期中のすべての作業項目だけでなく、イベントでの待機を含めることができます。 この例では、各作業項目には同じ取り消しトークンのコピーが渡されるため、取り消し要求に応答することができます。 -## 関連項目 +## 参照 [EventWaitHandle、AutoResetEvent、CountdownEvent、ManualResetEvent](../../../docs/standard/threading/eventwaithandle-autoresetevent-countdownevent-manualresetevent.md) diff --git a/docs/standard/threading/creating-threads-and-passing-data-at-start-time.md b/docs/standard/threading/creating-threads-and-passing-data-at-start-time.md index d01569ac02d..bdc8fbcd6a9 100644 --- a/docs/standard/threading/creating-threads-and-passing-data-at-start-time.md +++ b/docs/standard/threading/creating-threads-and-passing-data-at-start-time.md @@ -17,52 +17,55 @@ helpviewer_keywords: - threading [.NET Framework], passing data to threads - threading [.NET Framework], retrieving data from threads ms.assetid: 52b32222-e185-4f42-91a7-eaca65c0ab6d -caps.latest.revision: "18" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 61808dc804cc627ab368a5250414dfcc5f54c87e -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d17ef8a199061f56f00e39fa887e2e64f64427ec +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # スレッドを作成し、開始時にデータを渡す -オペレーティング システム プロセスが作成されると、オペレーティング システムは、元のアプリケーション ドメインを含め、そのプロセスでコードを実行するスレッドを挿入します。 その時点から、アプリケーション ドメインを作成および破棄オペレーティング システム スレッドを必ずしも作成中または破棄します。 実行対象のコードが管理されている場合、コード、オブジェクトの静的なを取得することによって、現在のアプリケーション ドメインで実行するスレッドを取得できるの型のプロパティです。 このトピックでは、スレッドの作成について説明し、データをスレッド プロシージャに渡すための代替案について説明します。 +オペレーティング システム プロセスが作成されると、オペレーティング システムは、元のアプリケーション ドメインを含め、そのプロセスでコードを実行するスレッドを挿入します。 その時点から、オペレーティング システム スレッドを作成または破棄せずに、アプリケーション ドメインを作成したり破棄したりすることができます。 実行対象コードがマネージ コードである場合は、 型の静的 プロパティを取得することで、現在のアプリケーション ドメインで実行されるスレッドの オブジェクトを取得できます。 このトピックではスレッドの作成について説明し、データをスレッド プロシージャに渡すための代替手段について説明します。 -## スレッドを作成します。 - 新たに作成するオブジェクトは、新しいマネージ スレッドを作成します。 クラスを受け取るコンス トラクターには、委任または委任; デリゲートを呼び出すときに、新しいスレッドで呼び出されるメソッドをラップする、メソッドです。 呼び出すにより複数回、がスローされます。 +## スレッドの作成 + 新しい オブジェクトを作成すると、新しいマネージ スレッドが作成されます。 クラスには デリゲートまたは デリゲートを受け取るコンストラクターがあります。デリゲートは、 メソッドの呼び出し時に新しいスレッドで呼び出されるメソッドをラップします。 複数回 を呼び出すと、 がスローされます。 - メソッドを返しますすぐに、多くの場合、新しいスレッドが実際に開始する前にします。 使用することができます、スレッドの活動を同期するためのプロパティを 1 つの時点でスレッドの状態の確認がこれらのプロパティを使用する必要があることはありません。 + メソッドはすぐに (多くの場合、新しいスレッドが実際に開始される前) 制御を返します。 および プロパティを使用して、任意の時点のスレッドの状態を判別できますが、スレッドのアクティビティを同期する場合にこれらのプロパティを使用しないでください。 > [!NOTE] -> 参照を保持する必要はありませんは、スレッドの開始後、オブジェクト。 スレッドは、スレッド プロシージャが終了するまでの実行を継続します。 +> スレッドが開始された後に、 オブジェクトへの参照を保持する必要はありません。 スレッドは、スレッド プロシージャが終了するまで、引き続き実行されます。 - 次のコード例では、別のオブジェクトのインスタンスと静的メソッドを呼び出す 2 つの新しいスレッドを作成します。 + 次のコード例では、2 つの新しいスレッドを作成し、別のオブジェクトでインスタンスおよび静的メソッドを呼び出します。 [!code-cpp[System.Threading.ThreadStart2#2](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.Threading.ThreadStart2/CPP/source2.cpp#2)] [!code-csharp[System.Threading.ThreadStart2#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.Threading.ThreadStart2/CS/source2.cs#2)] [!code-vb[System.Threading.ThreadStart2#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.Threading.ThreadStart2/VB/source2.vb#2)] -## データをスレッドに渡すと、スレッドからデータを取得します。 - .NET framework version 2.0 では、デリゲートを呼び出すときに、スレッドにデータを格納するオブジェクトを渡すための簡単な方法を提供する、メソッドのオーバー ロードします。 コード例については、「」を参照してください。 +## スレッドへのデータの受け渡しとスレッドからのデータの取得 + .NET framework Version 2.0 では、 デリゲートは、 メソッド オーバーロードの呼び出し時にスレッドにデータを含むオブジェクトを渡すための簡単な方法を提供します。 コード例については、「」を参照してください。 - 使用して、デリゲートは、タイプ セーフな方法、データを渡すため、メソッドのオーバー ロードは、任意のオブジェクトを受け取ります。 代わりに、スレッド処理とヘルパー クラスでデータをカプセル化しを使用し、スレッド プロシージャを実行するデリゲート。 この手法は次の 2 つのコード例に示します。 + メソッド オーバーロードではすべてのオブジェクトを受け入れるため、 デリゲートの使用はデータを渡すためのタイプ セーフな方法ではありません。 代わりに、ヘルパー クラスにデータとスレッド プロシージャをカプセル化し、 デリゲートを使用して、スレッド プロシージャを実行することができます。 この手法は、以下の 2 つのコード例で示されています。 - どちらの非同期呼び出しのデータを返す先がないために、デリゲートは戻り値。 スレッド メソッドの結果を取得するには、2 つ目のコード例で示すようにコールバック メソッドを使用できます。 + 非同期呼び出しからデータを返す場所がないため、いずれのデリゲートにも戻り値がありません。 スレッド メソッドの結果を取得するために、コールバック メソッドを使用することができます。これについては、2 つ目のコード例に示されています。 [!code-cpp[System.Threading.ThreadStart2#3](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.Threading.ThreadStart2/CPP/source3.cpp#3)] [!code-csharp[System.Threading.ThreadStart2#3](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.Threading.ThreadStart2/CS/source3.cs#3)] [!code-vb[System.Threading.ThreadStart2#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.Threading.ThreadStart2/VB/source3.vb#3)] -### コールバック メソッドを使用してデータを取得します。 - 次の例では、スレッドのスレッドからデータを取得するコールバック メソッドを示します。 データおよびスレッド メソッドを含むクラスのコンス トラクターは、コールバック メソッドを表すデリゲートも受け取ります。スレッド メソッドが終了する前に、コールバック デリゲートを呼び出します。 +### コールバック メソッドによるデータの取得 + 次の例では、スレッドからデータを取得するコールバック メソッドを示します。 データとスレッド メソッドを含むクラスのコンストラクターは、コールバック メソッドを表すデリゲートも受け入れます。スレッド メソッドが終了する前に、コールバック デリゲートが呼び出されます。 [!code-cpp[System.Threading.ThreadStart2#4](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.Threading.ThreadStart2/CPP/source4.cpp#4)] [!code-csharp[System.Threading.ThreadStart2#4](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.Threading.ThreadStart2/CS/source4.cs#4)] [!code-vb[System.Threading.ThreadStart2#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.Threading.ThreadStart2/VB/source4.vb#4)] -## 関連項目 +## 参照 diff --git a/docs/standard/threading/destroying-threads.md b/docs/standard/threading/destroying-threads.md index 0609969cdc7..0241106e02f 100644 --- a/docs/standard/threading/destroying-threads.md +++ b/docs/standard/threading/destroying-threads.md @@ -15,30 +15,33 @@ helpviewer_keywords: - destroying threads - threading [.NET Framework], destroying threads ms.assetid: df54e648-c5d1-47c9-bd29-8e4438c1db6d -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 4a41dce5db707d0be49c283256de665d316e1a1f -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3bdacb1cc54e3b67a1b4cef4f9fd274e65037faa +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # スレッドの破棄 -マネージ スレッドを完全に停止するメソッドを使用します。 呼び出すと、共通言語ランタイムをスロー、対象のスレッドにキャッチできる対象のスレッドにします。 詳細については、「」を参照してください。 +マネージ スレッドを完全に停止するには、 メソッドを使用します。 を呼び出すと、共通言語ランタイムが対象スレッドで をスローし、対象スレッドはそれをキャッチできます。 詳細については、「」を参照してください。 > [!NOTE] -> スレッドが実行されている場合は、アンマネージ コードの場合にそのメソッドが呼び出されると、ランタイムのマークが付け。 スレッドがマネージ コードに戻ると、例外がスローされます。 +> スレッドが メソッドの呼び出し時にアンマネージ コードを実行する場合、ランタイムはそれを としてマークします。 スレッドがマネージ コードに戻ると、例外がスローされます。 - スレッドが中止されると、一度を再起動することはできません。 + スレッドが中止されると、再起動することはできません。 - メソッドは行われません、スレッドが、すぐに中止する対象のスレッドにキャッチできるため、内のコードの任意の量を実行し、`finally`ブロックします。 呼び出すことができますスレッドが終了するまで待機する必要がある場合。 ブロッキング呼び出しではスレッドの実行が実際に停止されるまで返されないか、オプションのタイムアウト間隔が経過しました。 中止されたスレッドを呼び出すことが、メソッドで無限の処理を実行したり、`finally`ブロックにあるため、タイムアウト時間を指定しないと場合、待機が終了とは限りません。 + 対象スレッドが をキャッチし、`finally` ブロック内の任意の量のコードを実行できるため、 メソッドにより、スレッドがすぐに中止されることはありません。 スレッドが終了するまで待機する必要がある場合は、 を呼び出すことができます。 は、スレッドが実際に実行を停止するか、オプションのタイムアウト間隔が経過するまで返されないブロック呼び出しです。 中止されたスレッドは メソッドを呼び出したり、`finally` ブロックで無制限処理を実行したりすることができるため、タイムアウトを指定しない場合、終了するまで待機するとは限りません。 - 呼び出しで待機しているスレッド、メソッドを呼び出す他のスレッドを中断できるです。 + メソッドへの呼び出しを待機しているスレッドは、 を呼び出す他のスレッドで中断することができます。 ## ThreadAbortException の処理 - 呼び出しの結果として、中止するスレッドが予想される場合またはスレッドが実行されているアプリケーション ドメインをアンロードした結果として、自分のコードから (使用スレッドを終了する)、スレッドを処理する必要がありますでの最終処理を実行し、`finally`句、次のコードに示すようにします。 + 独自のコードからの の呼び出しの結果、またはスレッドが実行中のアプリケーション ドメインのアンロード ( を使用してスレッドを終了する) の結果として、スレッドが中止されることが予想される場合、スレッドは を処理し、以下のコードに示すように、`finally` 句で最終処理を実行する必要があります。 ```vb Try @@ -69,11 +72,11 @@ catch (ThreadAbortException ex) // is rethrown at the end of the Finally clause. ``` - クリーンアップ コードがである必要があります、`catch`句または`finally`句、ため、の最後に、システムによって再スロー、`finally`句、またはの最後に、`catch`句がある場合にない`finally`句。 + クリーンアップ コードは `catch` 句または `finally` 句にある必要があります。これは、 が `finally` 句の最後、または `catch` 句の最後 (`finally` 句がない場合) にシステムによって再スローされるためです。 - システムから呼び出すことによって、例外を再スローすることができなくことができます、メソッドです。 ただし、行う必要がある場合のみ、この独自のコードの原因となった、です。 + メソッドを呼び出して、システムが例外を再スローしないようにすることができます。 ただし、この操作は独自のコードにより が発生した場合にのみ行ってください。 -## 関連項目 +## 参照 [スレッドの使用とスレッド処理](../../../docs/standard/threading/using-threads-and-threading.md) diff --git a/docs/standard/threading/eventwaithandle-autoresetevent-countdownevent-manualresetevent.md b/docs/standard/threading/eventwaithandle-autoresetevent-countdownevent-manualresetevent.md index 8f14e95596a..3ca41d7c73e 100644 --- a/docs/standard/threading/eventwaithandle-autoresetevent-countdownevent-manualresetevent.md +++ b/docs/standard/threading/eventwaithandle-autoresetevent-countdownevent-manualresetevent.md @@ -13,39 +13,42 @@ helpviewer_keywords: - threading [.NET Framework], EventWaitHandle class - event wait handles [.NET Framework] ms.assetid: cd94fc34-ac15-427f-b723-a1240a4fab7d -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 5c0bcb27ed9c8981665a50c129dfbd824c9612f5 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 6c545f9ebc924c0a12ee2e76fdb6c725c25e2353 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # EventWaitHandle、AutoResetEvent、CountdownEvent、ManualResetEvent イベント待機ハンドルを使用して、スレッドでお互いにシグナル通知し、それぞれのシグナルを待機することで、スレッドの動作を同期できます。 これらの同期イベントは Win32 待機ハンドルに基づいており、通知を受けると自動的にリセットされるものと、手動でリセットされるものの 2 種類があります。 - イベント待機ハンドルは、同じ同期シナリオの多くに便利なクラスです。 イベント待機ハンドルがより使いやすく、多くの場合、メソッド、および、シグナリングより詳細に制御を提供します。 名前付きのイベント待機ハンドルを使用して、アプリケーション ドメイン間やプロセス間で動作を同期させるためにも使用できます。これに対し、モニターはアプリケーション ドメインに対してローカルです。 + イベント待機ハンドルは、 クラスと同じ多くの同期シナリオで有用です。 イベント待機ハンドルは、多くの場合、 および メソッドより使いやすく、シグナル化を細かく制御できます。 名前付きのイベント待機ハンドルを使用して、アプリケーション ドメイン間やプロセス間で動作を同期させるためにも使用できます。これに対し、モニターはアプリケーション ドメインに対してローカルです。 ## このセクションの内容 [EventWaitHandle](../../../docs/standard/threading/eventwaithandle.md) - クラスは、自動のいずれかを表すことができるか、手動リセット イベントと、ローカル イベントまたはシステム イベントの名前します。 + クラスは、自動または手動のリセット イベントを表します。また、ローカル イベントまたは名前付きのシステム イベントのいずれかです。 [AutoResetEvent](../../../docs/standard/threading/autoresetevent.md) - クラスから派生ローカル イベントに自動的にリセットを表すとします。 + クラスは から派生し、自動的にリセットされるローカル イベントを表します。 [ManualResetEvent と ManualResetEventSlim](../../../docs/standard/threading/manualresetevent-and-manualreseteventslim.md) - クラスから派生手動でリセットする必要があるローカル イベントを表します。 クラスは軽量で高速のバージョンで、同一プロセス内のイベントに使用することができます。 + クラスは から派生し、手動でリセットする必要があるローカル イベントを表します。 クラスは軽量で高速なバージョンであり、同じプロセス内のイベントに使用できます。 [CountdownEvent](../../../docs/standard/threading/countdownevent.md) - クラスには、待機ハンドルを使用しているコードの分岐および結合の並列処理のパターンを実装する簡単な方法が用意されています。 + クラスは、待機ハンドルを使用するコード内の fork/join 並列処理パターンを簡単に実装する簡素化された方法を提供します。 ## 関連項目 [待機ハンドル](http://msdn.microsoft.com/library/48d10b6f-5fd7-407c-86ab-0179aef72489) - クラスは、基本クラスの、およびクラスです。 などの静的メソッドがある待機ハンドルのすべての型を使用する場合に便利です。 + クラスは、 クラスの基底クラスです。 すべての種類の待機ハンドルを操作する場合に便利な などの静的メソッドが含まれます。 -## 関連項目 +## 参照 diff --git a/docs/standard/threading/eventwaithandle.md b/docs/standard/threading/eventwaithandle.md index 4a4447ab28a..52435660260 100644 --- a/docs/standard/threading/eventwaithandle.md +++ b/docs/standard/threading/eventwaithandle.md @@ -14,62 +14,65 @@ helpviewer_keywords: - event wait handles [.NET Framework] - threading [.NET Framework], cross-process synchronization ms.assetid: 11ee0b38-d663-4617-b793-35eb6c64e9fc -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 1bd248133bd95ff05246eb36a8e250247fd7ed61 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 665676a25aea48388ba01b8028af00049b113f2b +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # EventWaitHandle -クラスを通知し、通知を待機して、互いに通信するためにスレッドを使用できます。 イベント待機ハンドルが (単にイベントとも呼ばれます) は、待機ハンドルを待機中の 1 つまたは複数のスレッドを解放するために通知されることができます。 通知を受けると、イベント待機ハンドルは、手動または自動的にリセットされます。 クラスは、いずれか、ローカル イベント待機ハンドル (ローカル イベント) を表すことができるまたは名前付きシステム イベント (イベントまたはシステム イベント、すべてのプロセスに表示される名前付き) のハンドルを待機します。 + クラスを使用すると、スレッドは通知および通知の待機により、互いに通信できます。 イベント待機ハンドル (単にイベントとも呼ばれます) は、通知を受けて、1 つ以上の待機中のイベントを解放できる待機ハンドルです。 通知を受けると、イベント待機ハンドルは手動または自動でリセットされます。 クラスは、ローカルのイベント待機ハンドル (ローカル イベント) または名前付きのシステム イベント待機ハンドル (名前付きのイベントまたはシステム イベント。すべてのプロセスから参照できます) を表すことができます。 > [!NOTE] -> イベント待機ハンドルは、.NET Framework では、その単語を通常意味という意味でのイベントでがありません。 またはがないデリゲート イベント ハンドラー関係します。 Word「イベント」は使用を参照して、オペレーティング システムのイベントとしてしました従来されているため、および待機ハンドルの通知を待機中のスレッドを示すので説明のために、イベントが発生しました。 +> イベント待機ハンドルは、通常 .NET Framework でイベントと呼ばれるものとは異なります。 デリゲートやイベント ハンドラーは関連していません。 "イベント" という言葉で説明されているのは、それらがこれまでオペレーティング システム イベントと呼ばれており、待機ハンドルの通知はイベントが発生した待機中のスレッドを示すためです。 - 両方のローカルと名前付きイベント待機ハンドルによって保護されて、システムの同期オブジェクトを使用してする対象のリソースを解放することを確認してください。 使用することができます、オブジェクトの使用が完了したらすぐにリソースを解放します。 + ローカル イベント待機ハンドルと名前付きイベント待機ハンドルはどちらも、システム同期オブジェクトを使用します。これは ラッパーによって保護されており、リソースが確実に解放されるようにします。 メソッドを使用すると、オブジェクトを使い終わったらすぐにリソースを解放できます。 -## イベント待機ハンドルを自動的にリセットします。 - 指定して自動リセット イベントを作成するを作成するとき、オブジェクト。 その名前からわかるように、この同期イベントに自動的にリセット シグナルを受け取ると、1 つの待機中のスレッドを解放します。 呼び出して、イベントの信号をそのメソッドです。 +## 自動的にリセットされるイベント待機ハンドル + 自動リセット イベントを作成するには、 オブジェクトを作成するときに を指定します。 その名前が示すとおり、この同期イベントは通知を受けたときに、単一の待機中のスレッドを解放した後、自動的にリセットされます。 イベントを通知するには、その メソッドを呼び出します。 - 自動リセット イベントは通常、一度に 1 つのスレッドのリソースへの排他アクセスを提供するために使用します。 スレッドが呼び出すことによって、リソースを要求、メソッドです。 メソッドを返しますのかどうかはその他のスレッドが保持していない待機ハンドル、`true`し、呼び出し元のスレッドがリソースを制御します。 + 通常、自動リセット イベントは、単一のスレッドのリソースに一度に排他アクセスを提供するために使用されます。 スレッドは、 メソッドを呼び出してリソースを要求します。 他のスレッドに待機ハンドルがない場合、メソッドは `true` を返し、呼び出し元スレッドはリソースの制御権を持ちます。 > [!IMPORTANT] -> 同様に、すべての同期機構には、すべてのコード パスが保護されたリソースにアクセスする前に、適切な待機ハンドルを待機することを確認する必要があります。 スレッドの同期は協調的です。 +> あらゆる同期機構と同様に、すべてのコード パスが適切な待機ハンドルを待ってから、保護されているリソースにアクセスする必要があります。 スレッドの同期は連携しています。 - 自動リセット イベントがシグナル状態にスレッドが待機していないときに、シグナル状態のままになるスレッドが試行されるまでです。 イベントは、スレッドを解放し、すぐにリセットされ、後続のスレッドをブロックします。 + 自動リセット イベントが通知を受けたとき、待機中のスレッドがない場合は、スレッドが待機中になるまでシグナル状態のままです。 イベントはスレッドを解放してすぐにリセットされ、以降のスレッドをブロックします。 ## 手動でリセットされるイベント待機ハンドル - 指定して、手動リセット イベントを作成するを作成するとき、オブジェクト。 その名前からわかるように、この同期イベント必要があります手動でリセットする通知を受けた後です。 これがリセットされるまで、呼び出すことによってそのメソッド、イベント ハンドルを待機しているスレッドすぐにブロックなしで実行します。 + 手動リセット イベントを作成するには、 オブジェクトを作成するときに を指定します。 その名前が示すとおり、この同期イベントは、通知を受けた後に手動でリセットする必要があります。 メソッドを呼び出してリセットするまで、イベント ハンドルを待っているスレッドはすぐに続行され、ブロックされません。 - 手動では、並べてのゲートのようにイベントの動作をリセットします。 イベントがシグナル状態ではないときを並べてで木馬と同様に、待機しているスレッドをブロックします。 呼び出すことによって、イベントを通知するときにそのメソッドを待機中のすべてのスレッドは続行するために解放します。 イベントはまでシグナル状態のまま、メソッドが呼び出されます。 これにより、手動リセット イベントは、1 つのスレッドがタスクを終了するまで待機する必要があるスレッドを保持するための望ましい方法です。 + 手動リセット イベントは、家畜を飼う囲いのゲートのように動作します。 イベントが通知を受けないと、待機中のスレッドは囲いの中の馬のようにブロックされます。 イベントが通知を受けると、その メソッドを呼び出して、すべての待機中のスレッドは自由に続行できます。 イベントは、その メソッドが呼び出されるまで、シグナル状態のままです。 これにより、手動リセット イベントは、1 つのスレッドがタスクを終えるまで待機させる必要のあるスレッドを保持する理想的な方法となっています。 - 並べてのままの木馬と同様に、オペレーティング システムによってスケジュールされると実行を再開するにはリリースのスレッドの時間がかかります。 場合、メソッドはすべてのスレッドの実行が再開する前に、残りのスレッドをもう一度ブロックできます。 再開されるスレッドとブロックされるスレッド ランダムなどの要因によって負荷、システムでは、スレッドの数を待機しているスケジューラのです。 これは、最も一般的な使用パターン、通知を行った後のイベントを通知するスレッドの終了する場合でもこれは問題ではありません。 結局のところ、新しいタスクを開始するイベントをシグナル状態には、スレッドが再開された待機中のスレッドを実行する場合に、待機中のすべてのスレッドが再開されるまでブロックする必要があります。 それ以外の場合、競合状態があり、コードの動作は予測できません。 + 馬が囲いから出るように、解放されたスレッドがオペレーティング システムによってスケジュールされ、実行が再開されるには時間がかかります。 すべてのスレッドの実行が再開される前に メソッドが呼び出された場合、残りのスレッドは再びブロックされます。 再開されるスレッドとブロックされるスレッドは、システム上の負荷や、スケジューラを待っているスレッドの数など、ランダムな要素によって異なります。 イベントを通知したスレッドが通知後に終了した場合 (これは最も一般的な使用パターンです)、これは問題ではありません。 すべての待機中のスレッドが再開された後で、イベントを通知したスレッドに新しいタスクを開始させる場合は、すべての待機中のスレッドが再開されるまで、そのスレッドをブロックする必要があります。 それ以外の場合は競合状態で、コードの動作は予測できません。 -## 自動および手動のイベントに共通の機能 - 通常、1 つまたは複数のスレッドをブロックするブロックされていないスレッドを呼び出すまで、 (自動リセット イベント) の場合の待機中のスレッドの 1 つまたはすべてのパラメーターを解放するメソッド (の場合は手動リセット イベント)。 スレッドがシグナル送信、し、ブロックには、アトミックな操作として、静的なを呼び出すことによって、メソッドです。 +## 自動イベントと手動イベントの共通の機能 + 通常、ブロックされていないスレッドが メソッドを呼び出して、いずれかの待機中のスレッド (自動リセット イベントの場合) またはそれらすべて (手動リセット イベントの場合) を解放するまで、1 つ以上のスレッドが でブロックします。 スレッドは、静的な メソッドを呼び出すことにより、 の通知とブロックを分割できない操作として行うことができます。 - オブジェクトは、静的で使用できるメソッドです。 両方のクラスから派生、これらの方法で両方のクラスを使用することができます。 + オブジェクトは、静的な および メソッドと共に使用できます。 および クラスはいずれも から派生するため、両方のクラスをこれらのメソッドで使用できます。 -### 名前付きイベント - Windows オペレーティング システムでは、名前を持つイベント待機ハンドルを許可します。 名前付きイベントは、システム全体です。 つまり、名前付きのイベントが作成されると、すべてのプロセスのすべてのスレッドから参照です。 したがって、名前付きイベントは、プロセスおよびスレッドの活動を同期するために使用できます。 +### 名前付きのイベント + Windows オペレーティング システムでは、イベント待機ハンドルに名前を付けることができます。 名前付きのイベントはシステム全体で使用されます。 つまり、いったん名前付きのイベントを作成すると、すべてのプロセスのすべてのスレッドがそれを参照できます。 したがって、名前付きのイベントを使用して、スレッドだけでなくプロセスのアクティビティも同期できます。 - 作成することができます、イベント名を指定するコンス トラクターのいずれかを使用して名前付きシステム イベントを表すオブジェクト。 + 名前付きのシステム イベントを表す オブジェクトを作成するには、イベントの名前を指定するいずれかのコンストラクターを使用します。 > [!NOTE] -> 名前付きイベントがシステム全体であるため、可能であれば複数名前付きイベントを同じを表すオブジェクト。 コンス トラクターを呼び出すたびに、またはメソッドは、新しいオブジェクトを作成します。 同じ名前を繰り返し指定すると、同じ名前付きイベントを表す複数のオブジェクトが作成します。 +> 名前付きのイベントはシステム全体で使用されるため、複数の オブジェクトで同じ名前付きイベントを表すことができます。 コンストラクターまたは メソッドを呼び出すたびに、新しい オブジェクトが作成されます。 同じ名前を繰り返し指定すると、同じ名前付きイベントを表す複数のオブジェクトを作成できます。 - イベントの名前を使用して、警告が表示されます。 これらは、システム全体であるため、同じ名前を使用する別のプロセスでは予期せず、スレッドをブロックできます。 同じコンピューター上で実行される悪意のあるコードが、これをサービス拒否攻撃の土台として使用する可能性があります。 + 名前付きのイベントを使用する際には注意が必要です。 それらはシステム全体で使用されるので、別のプロセスが同じ名前を使用すると、スレッドが予期せずにブロックされる場合があります。 同じコンピューター上で実行される悪意のあるコードが、これをサービス拒否攻撃の土台として使用する可能性があります。 - アクセス制御セキュリティを使用して保護する、を指定するコンス トラクターを使用して、可能であれば、名前付きイベントを表すオブジェクト、オブジェクト。 アクセス制御を使用してセキュリティを適用することも、メソッドが、このイベント待機ハンドルが作成された時刻と保護されている時間の間に脆弱性のままにします。 イベントを保護するが、アクセス制御セキュリティにより、悪意のある攻撃を防ぐため、予期しない名前の衝突の問題が解決しません。 + アクセス制御セキュリティを使用して、名前付きのイベントを表す オブジェクトを保護します。可能であれば オブジェクトを指定するコンストラクターを使用します。 また、 メソッドを使用してアクセス制御セキュリティを適用できますが、この場合、イベント待機ハンドルが作成されてから保護されるまでの間に無防備な時間帯が生じてしまいます。 アクセス制御セキュリティでイベントを保護すると、悪意のある攻撃を防ぐのに役立ちますが、予期しない名前の衝突の問題解決にはなりません。 > [!NOTE] -> 異なり、クラス、派生クラス待機ハンドルを表すローカルのみであることができます。 名前付きシステム イベントを表すことはできません。 +> クラスとは異なり、派生したクラスである および は、ローカルの待機ハンドルのみを表すことができます。 名前付きのシステム イベントを表すことはできません。 -## 関連項目 +## 参照 diff --git a/docs/standard/threading/exceptions-in-managed-threads.md b/docs/standard/threading/exceptions-in-managed-threads.md index 3f739b8826a..fd7e86b16a3 100644 --- a/docs/standard/threading/exceptions-in-managed-threads.md +++ b/docs/standard/threading/exceptions-in-managed-threads.md @@ -14,15 +14,18 @@ helpviewer_keywords: - threading [.NET Framework],exceptions in managed threads - managed threading ms.assetid: 11294769-2e89-43cb-890e-ad4ad79cfbee -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: ebb5559d300bb3db34fe640e87eb8b9e67931561 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4f68a7aebdb1625b149287d70fd91c2108a658b9 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # マネージ スレッドの例外 .NET Framework バージョン 2.0 以降では、共通言語ランタイムはスレッド内のほとんどのハンドルされない例外をそのまま続行させます。 ほとんどの場合、これはハンドルされない例外によってアプリケーションが終了することを意味します。 @@ -32,9 +35,9 @@ ms.lasthandoff: 10/18/2017 共通言語ランタイムには、プログラム フローの制御に使用する特定のハンドルされない例外について、次のような安全策が用意されています。 -- Aためのスレッドでスローされるが呼び出されました。 +- が呼び出されたため、スレッドで がスローされる。 -- が、スレッドを実行しているアプリケーション ドメインがアンロードされるため、スレッドでスローされます。 +- スレッドが実行中のアプリケーション ドメインがアンロードされると、スレッドで がスローされる。 - 共通言語ランタイムまたはホスト プロセスは、内部例外をスローすることによってスレッドを終了します。 @@ -56,7 +59,7 @@ ms.lasthandoff: 10/18/2017 - スレッド プールのスレッドのハンドルされない例外は存在しません。 タスクが例外をスローし、その例外がハンドルされない場合、ランタイムは例外のスタック トレースをコンソールに出力し、スレッドをスレッド プールに戻します。 -- スレッドでハンドルされない例外が作成されると、このようなものはありません、のメソッド、クラスです。 このようなスレッド上で実行中のコードが例外をスローし、その例外がハンドルされない場合、ランタイムは例外のスタック トレースをコンソールに出力し、スレッドを適切に終了します。 +- クラスの メソッドを使用して作成されたスレッドのハンドルされない例外は存在しません。 このようなスレッド上で実行中のコードが例外をスローし、その例外がハンドルされない場合、ランタイムは例外のスタック トレースをコンソールに出力し、スレッドを適切に終了します。 - ファイナライザー スレッドのハンドルされない例外は存在しません。 ファイナライザーが例外をスローし、その例外がハンドルされない場合、ランタイムは例外のスタック トレースをコンソールに出力し、ファイナライザー スレッドがファイナライザーの実行を再開できるようにします。 @@ -69,7 +72,7 @@ ms.lasthandoff: 10/18/2017 - シグナルを受信したときに、スレッドが適切に終了するようにコードを再構築します。 -- 使用して、スレッドを中止します。 +- スレッドを中止するには、 メソッドを使用します。 - プロセスを終了できるように、スレッドを中止する必要がある場合は、スレッドをバックグラウンド スレッドにして、プロセス終了時にスレッドが自動的に終了するようにします。 @@ -85,5 +88,5 @@ ms.lasthandoff: 10/18/2017 ## ホストのオーバーライド .NET Framework バージョン 2.0 では、アンマネージ ホストはホスト API の [ICLRPolicyManager](../../../docs/framework/unmanaged-api/hosting/iclrpolicymanager-interface.md) インターフェイスを使用して、共通言語ランタイムの既定のハンドルされない例外ポリシーをオーバーライドできます。 [ICLRPolicyManager::SetUnhandledExceptionPolicy](../../../docs/framework/unmanaged-api/hosting/iclrpolicymanager-setunhandledexceptionpolicy-method.md) 関数を使用して、ハンドルされない例外のポリシーを設定します。 -## 関連項目 +## 参照 [マネージ スレッド処理の基本](../../../docs/standard/threading/managed-threading-basics.md) diff --git a/docs/standard/threading/foreground-and-background-threads.md b/docs/standard/threading/foreground-and-background-threads.md index b41e55aab7f..5a315ec6a49 100644 --- a/docs/standard/threading/foreground-and-background-threads.md +++ b/docs/standard/threading/foreground-and-background-threads.md @@ -14,32 +14,35 @@ helpviewer_keywords: - foreground threads - background threads ms.assetid: cfe0d632-dd35-47e0-91ad-f742a444005e -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 42ad427fc2c1175c0d9b333aa418aea039f11a35 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 83022bd27379e1ee34197af4897a5c809f495f48 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # フォアグラウンド スレッドとバックグラウンド スレッド -マネージ スレッドは、バック グラウンド スレッドまたはフォア グラウンド スレッドのいずれかです。 バック グラウンド スレッドは同じですがフォア グラウンド スレッドを 1 つの例外: バック グラウンド スレッドが実行されているマネージ実行環境を維持しません。 すべてのフォア グラウンド スレッドをマネージ プロセス (.exe ファイルは、マネージ アセンブリ) に停止すると、システムはすべてのバック グラウンド スレッドを停止し、シャット ダウンします。 +マネージ スレッドは、バックグラウンド スレッドまたはフォアグラウンド スレッドのいずれかです。 バックグラウンド スレッドは、1 つの例外を除き、フォアグラウンド スレッドと同じです。その例外とは、バックグラウンド スレッドではマネージ実行環境を実行させておくことができないことです。 すべてのフォアグラウンド スレッドが (.exe ファイルがマネージ アセンブリである) マネージ プロセスで停止されると、システムはすべてのバックグラウンド スレッドを停止し、シャットダウンします。 > [!NOTE] -> ランタイムでは、プロセスをシャット ダウンしているため、バック グラウンド スレッドが停止したら、スレッドで例外はスローされません。 ただし、場合のスレッドは停止ため、メソッドは、アプリケーション ドメインをアンロード、がフォア グラウンドとバック グラウンド スレッドでスローされます。 +> プロセスがシャットダウンしているため、ランタイムがバックグラウンド スレッドを停止した場合、スレッドでは例外がスローされません。 ただし、 メソッドがアプリケーション ドメインをアンロードしたために、スレッドが停止された場合、フォアグラウンド スレッドとバックグラウンド スレッドの両方で がスローされます。 - 使用して、スレッドがバック グラウンドまたはフォア グラウンド スレッドがかどうかを判断する、またはその状態を変更するプロパティです。 スレッドはバック グラウンド スレッドにいつでも設定してそのプロパティを`true`です。 + スレッドがバックグラウンド スレッドであるか、フォアグラウンド スレッドであるかを判断する場合や、その状態を変更する場合は、 プロパティを使用します。 スレッドは、 プロパティを `true` に設定することで、いつでもバックグラウンド スレッドに変更できます。 > [!IMPORTANT] -> スレッドの前景色または背景の状態は、スレッドで未処理の例外の結果には影響しません。 .NET framework version 2.0 では、フォア グラウンドまたはバック グラウンド スレッドで未処理の例外は、アプリケーションの終了になります。 参照してください[マネージ スレッドの例外](../../../docs/standard/threading/exceptions-in-managed-threads.md)です。 +> スレッドのフォアグラウンドまたはバックグラウンドの状態が、スレッドのハンドルされない例外の結果に影響することはありません。 .NET framework Version 2.0 では、フォアグラウンドまたはバックグラウンド スレッドのハンドルされない例外により、アプリケーションが終了します。 「[マネージ スレッドの例外](../../../docs/standard/threading/exceptions-in-managed-threads.md)」を参照してください。 - マネージ スレッド プールに属するスレッドを (つまり、あるスレッドプロパティは`true`) スレッドがバック グラウンドします。 アンマネージ コードからマネージ実行環境を入力するすべてのスレッドがバック グラウンド スレッドとしてマークされます。 すべてのスレッドを作成して、新しい開始によって生成されたオブジェクトは既定のフォア グラウンド スレッドでします。 + マネージ スレッド プールに属するスレッド (つまり、 プロパティが `true` のスレッド) はバックグラウンド スレッドです。 アンマネージ コードからマネージ実行環境に入るすべてのスレッドは、バックグラウンド スレッドとしてマークされます。 新しい オブジェクトを作成して開始することで生成されるすべてのスレッドは、既定でフォアグラウンド スレッドとなります。 - スレッドを使用して、ソケット接続などのアクティビティを監視する場合は、設定、プロパティを`true`スレッドが終了してから、プロセスをできないようにします。 + スレッドを使用して、ソケット接続などのアクティビティを監視する場合は、その プロパティを `true` に設定して、スレッドがプロセスの終了を回避しないようにします。 -## 関連項目 +## 参照 diff --git a/docs/standard/threading/how-to-enable-thread-tracking-mode-in-spinlock.md b/docs/standard/threading/how-to-enable-thread-tracking-mode-in-spinlock.md index c42921ab708..e9a2343f9ae 100644 --- a/docs/standard/threading/how-to-enable-thread-tracking-mode-in-spinlock.md +++ b/docs/standard/threading/how-to-enable-thread-tracking-mode-in-spinlock.md @@ -11,30 +11,34 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: SpinLock, how to enable thread-tracking +helpviewer_keywords: +- SpinLock, how to enable thread-tracking ms.assetid: 62ee2e68-0bdd-4869-afc9-f0a57a11ae01 -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: ca5f1b6eace7a24a6bbb7fd541858246828fa757 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: f3d5b40f1f7b4b7534a44f4f7ab542d33d373702 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: SpinLock のスレッド追跡モードを有効にする -非常に短い待機時間が含まれる場合に使用できる低レベルの相互排他ロックです。 再入可能ではありません。 スレッドがロックに入った後、再入する前に正しくロックを終了にする必要があります。 通常、ロックを再入力しようとすると、デッドロックが発生し、デッドロックをデバッグが非常に困難になることができます。 開発を支援するためスレッドが既に保持しているロックを再入力しようとしたときにスローされる例外を発生させるスレッド追跡モードをサポートします。 これは、操作により、あるロックが適切に終了しなかったポイントを簡単に特定できます。 使用してスレッド追跡モードをオンすることができます、をブール値を受け取るコンス トラクターは入力パラメーター、およびの引数を渡すこと`true`です。 開発およびテスト フェーズを完了すると後、は、パフォーマンス向上のためのスレッド追跡モードをオフにします。 + は低レベルの相互排他ロックであり、待機時間が非常に短いシナリオで使用できます。 は再入可能ではありません。 スレッドはロックを取得した後、ロックを正しく解放してから再度取得する必要があります。 通常、ロックを再取得しようとすると、デッドロックが発生し、デッドロックのデバッグが非常に困難になる場合があります。 開発の支援手段として、 ではスレッド追跡モードがサポートされ、スレッドが既に保持しているロックを再取得しようとしたときに例外がスローされます。 これにより、ロックが正しく解放されたなかった位置を見つけやすくなります。 スレッド追跡モードを有効にするには、ブール入力パラメーターを受け取る コンストラクターを使用して、`true` の引数を渡します。 開発およびテスト フェーズの完了後は、パフォーマンスを向上させるため、スレッド追跡モードを無効にしてください。 ## 例 - 次の例では、スレッド追跡モードを示します。 ロックを適切に終了する行については、結果は、次のいずれかの原因となるコーディング エラーをシミュレートするためにコメント アウトします。 + 次の例はスレッド追跡モードを示しています。 以下のいずれかの結果の原因となるコード エラーをシミュレートするために、ロックを正しく解放する行がコメントアウトされています。 -- 場合、例外がスローされます、の引数を使用して作成された`true`(`True` Visual Basic で)。 +- `true` (Visual Basic では `True`) の引数を使用して が作成された場合、例外がスローされる。 -- デッドロックに陥る、の引数を使用して作成された`false`(`False` Visual Basic で)。 +- `false` (Visual Basic では `False`) の引数を使用して が作成された場合、デッドロックが発生する。 [!code-csharp[CDS_SpinLock#01](../../../samples/snippets/csharp/VS_Snippets_Misc/cds_spinlock/cs/spinlockdemo.cs#01)] [!code-vb[CDS_SpinLock#01](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_spinlock/vb/spinlock_threadtracking.vb#01)] -## 関連項目 +## 参照 [SpinLock](../../../docs/standard/threading/spinlock.md) diff --git a/docs/standard/threading/how-to-listen-for-cancellation-requests-by-polling.md b/docs/standard/threading/how-to-listen-for-cancellation-requests-by-polling.md index 39f89747889..2b7489d68ed 100644 --- a/docs/standard/threading/how-to-listen-for-cancellation-requests-by-polling.md +++ b/docs/standard/threading/how-to-listen-for-cancellation-requests-by-polling.md @@ -11,30 +11,34 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: cancellation, how to poll for requests +helpviewer_keywords: +- cancellation, how to poll for requests ms.assetid: c7f2f022-d08e-4e00-b4eb-ae84844cb1bc -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 3f0e05e3f66d591a28d7e84d358934959764dab6 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 56a927e10cb026814302728a72acb2f32223b29b +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: ポーリングによりキャンセル要求を待機する -次の例では、ユーザー コードは、呼び出し元のスレッドから取り消しが要求されているかどうかを定期的にキャンセル トークンをポーリングすることを 1 つの方法を示します。 この例では、によって直接作成された非同期の操作に適用されますが、同様のパターン、型または型です。 +次の例は、ユーザー コードで取り消しトークンを定期的にポーリングし、呼び出し元のスレッドから取り消しが要求されているかどうかを確認する 1 つの方法を示しています。 この例では 型を使用しますが、 型または 型で直接作成される非同期操作にも同じパターンが適用されます。 ## 例 - ポーリングが必要、ブール型の値を読み取ることができる定期的にコードをループまたは再帰的なプロパティです。 使用している場合、の呼び出し元のスレッドが完了するタスクを待機している型にして、使用することができます、プロパティを調べて、例外をスローするメソッド。 このメソッドを使用するは、要求への応答に正しい例外がスローされたことを確認します。 使用している場合、 、手動でスローよりはこのメソッドを呼び出す、です。 例外をスローする必要はありませんし、先ほどプロパティをチェックし、プロパティは、メソッドから戻ることができるかどうか`true`です。 + ポーリングには、ブール プロパティの値を定期的に読み取ることができる、ある種のループまたは再帰的なコードが必要になります。 型を使用し、タスクが呼び出し元スレッドで完了するまで待機する場合は、 スレッドを使用してプロパティを確認し、例外をスローすることができます。 このメソッドを使用することで、要求に応じて、正しい例外がスローされるようになります。 を使用する場合は、 を手動でスローするよりもこのスレッドを呼び出す方が効果的です。 例外をスローする必要がない場合は、単にプロパティを確認し、プロパティが `true` である場合はメソッドから制御を返すことができます。 [!code-csharp[Cancellation#11](../../../samples/snippets/csharp/VS_Snippets_Misc/cancellation/cs/cancellationex11.cs#11)] [!code-vb[Cancellation#11](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cancellation/vb/cancellationex11.vb#11)] - 呼び出すは非常に高速とループにかなりのオーバーヘッドを導入していません。 + の呼び出しは非常に高速で、ループで大きなオーバーヘッドが発生することはありません。 - 呼び出す場合、のみを明示的にチェックする必要がある、プロパティ例外をスローしてだけでなく、取り消しに応答を行うには、その他の作業がある場合。 この例では、コードは、実際にはプロパティにアクセスします 2 回を確認できます: 明示的なアクセス権とで再度、メソッドです。 読み取りの act、プロパティは、1 つだけの揮発性アクセスごとの命令を読み取り、二重のアクセスは、パフォーマンスの観点から重要ではありません。 手動でをスローするのではなく、メソッドを呼び出して引き続き方が、です。 + を呼び出す場合に、例外をスローするだけではなく、取り消しに応じて他の作業を行う場合は プロパティを明示的に確認するだけで済みます。 この例では、コードで実際にプロパティに 2 回アクセスするのがわかります。つまり、明示的なアクセスで 1 回、 メソッドでもう 1 回です。 ただし、 プロパティの読み取り操作ではアクセスごとに 1 つの volatile 読み取りのみが含まれるため、パフォーマンスの観点からは二重アクセスは重要ではありません。 それでも、 を手動でスローするよりメソッドを呼び出すことをお勧めします。 -## 関連項目 +## 参照 [マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md) diff --git a/docs/standard/threading/how-to-listen-for-cancellation-requests-that-have-wait-handles.md b/docs/standard/threading/how-to-listen-for-cancellation-requests-that-have-wait-handles.md index d0c4f61b141..3347742b402 100644 --- a/docs/standard/threading/how-to-listen-for-cancellation-requests-that-have-wait-handles.md +++ b/docs/standard/threading/how-to-listen-for-cancellation-requests-that-have-wait-handles.md @@ -11,35 +11,39 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: cancellation, waiting with wait handles +helpviewer_keywords: +- cancellation, waiting with wait handles ms.assetid: 6e2aa49b-fc84-4bcf-962b-17db98b7edcb -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: e1eaa84d924fde63e94c36fab50a809c7c03f075 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: a0998703ef5b27b4de725a2c2adcfc3d9a2135b9 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 待機ハンドルがあるキャンセル要求を待機する -メソッドは、ブロックされた場合は、シグナル状態になるイベントの待機中、キャンセル トークンの値をチェックおよび適切なタイミングで反応できません。 最初の例などのイベントを使用しているときに、この問題を解決する方法を示しています。統合キャンセル フレームワークをネイティブにサポートしていません。 2 番目の例を使用するより効率的な方法を示しています。 、一元化されたキャンセルをサポートしています。 +イベントがシグナル状態になるのを待機している間にメソッドがブロックされた場合、取り消しトークンの値を確認して、適切なタイミングで応答することはできません。 最初の例は、統合取り消しフレームワークをネイティブにサポートしない などのイベントの処理時にこの問題を解決する方法を示しています。 2 番目の例は、統合取り消しをサポートする、 を使用するより効率的な方法を示しています。 > [!NOTE] -> [マイ コードのみ] が有効になっている場合、Visual Studio では、例外をスローする行で処理が中断され、"ユーザー コードで処理されない例外" に関するエラー メッセージが表示されることがあります。 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio の最初のエラーの処理は中断を防ぐために下にある [マイ コードのみ] チェック ボックスをオフにだけ**ツール、オプション、デバッグ、一般的な**します。 +> [マイ コードのみ] が有効になっている場合、Visual Studio では、例外をスローする行で処理が中断され、"ユーザー コードで処理されない例外" に関するエラー メッセージが表示されることがあります。 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio による処理が最初のエラーで中断しないようにするには、**[ツール] メニューの [オプション]、[デバッグ] 、[全般]** の順にクリックし、[マイ コードのみ] チェック ボックスをオフにします。 ## 例 - 次の例では、統合キャンセルをサポートしていない待機ハンドルのブロックを解除する方法について説明します。 + 次の例では を使用して、統合取り消しをサポートしない待機ハンドルのブロックを解除する方法を示します。 [!code-csharp[Cancellation#9](../../../samples/snippets/csharp/VS_Snippets_Misc/cancellation/cs/cancellationex9.cs#9)] [!code-vb[Cancellation#9](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cancellation/vb/cancellationex9.vb#9)] ## 例 - 次の例では、をサポートしているプリミティブがキャンセルを unified 調整のブロックを解除する方法を示します。 同じアプローチをなどその他の軽量な調整プリミティブと共に使用できる`Slim`とです。 + 次の例では を使用して、統合取り消しをサポートするコーディネーション プリミティブのブロックを解除する方法を示します。 `Slim` や などの他の軽量なコーディネーション プリミティブでも同じ方法を使用することができます。 [!code-csharp[Cancellation#10](../../../samples/snippets/csharp/VS_Snippets_Misc/cancellation/cs/cancellationex10.cs#10)] [!code-vb[Cancellation#10](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cancellation/vb/cancellationex10.vb#10)] -## 関連項目 +## 参照 [マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md) diff --git a/docs/standard/threading/how-to-listen-for-multiple-cancellation-requests.md b/docs/standard/threading/how-to-listen-for-multiple-cancellation-requests.md index b668ecae315..d865ef8d1cc 100644 --- a/docs/standard/threading/how-to-listen-for-multiple-cancellation-requests.md +++ b/docs/standard/threading/how-to-listen-for-multiple-cancellation-requests.md @@ -15,31 +15,34 @@ helpviewer_keywords: - cancellation tokens, joining - LinkedTokenSource, how to ms.assetid: 6f4f3804-2ed7-41b4-a97a-6e32b93f6e05 -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 36cf338a15ad3f7d234f902c50a2dbb1b2e95847 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 397de114a3d8c3cbcfbc8ab55e4dbaf45ca9b652 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 複数のキャンセル要求を待機する -この例では、いずれかのトークンが要求した場合、操作をキャンセルできるように、2 つのキャンセル トークンを同時にリッスンする方法を示します。 +この例では、2 つのキャンセル トークンを同時にリッスンして、いずれかのトークンからキャンセルが要求された場合に操作を取り消す方法を示します。 > [!NOTE] -> [マイ コードのみ] が有効になっている場合、Visual Studio では、例外をスローする行で処理が中断され、"ユーザー コードで処理されない例外" に関するエラー メッセージが表示されることがあります。 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio の最初のエラーの処理は中断を防ぐために下にある [マイ コードのみ] チェック ボックスをオフにだけ**ツール、オプション、デバッグ、一般的な**します。 +> [マイ コードのみ] が有効になっている場合、Visual Studio では、例外をスローする行で処理が中断され、"ユーザー コードで処理されない例外" に関するエラー メッセージが表示されることがあります。 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio による処理が最初のエラーで中断しないようにするには、**[ツール] メニューの [オプション]、[デバッグ] 、[全般]** の順にクリックし、[マイ コードのみ] チェック ボックスをオフにします。 ## 例 - 次の例で、メソッドを使用して 2 つのトークンを 1 つのトークンに結合します。 これにより、1 つのキャンセルをトークンを引数として受け取らないメソッドに渡されるトークン。 この例では、メソッドが、クラスおよびクラス内で生成されるトークンの外部から渡された両方のトークンを観察する必要があります、一般的なシナリオを示します。 + 次の例では、 メソッドを使用して 2 つのトークンを 1 つのトークンに結合します。 これで、1 つのキャンセル トークンのみを引数として受け取るメソッドにトークンを渡すことができます。 この例では、クラスの外部から渡されたトークンと、クラス内部で生成されたトークンの両方をメソッドで観察する必要がある一般的なシナリオを示します。 [!code-csharp[Cancellation#13](../../../samples/snippets/csharp/VS_Snippets_Misc/cancellation/cs/cancellationex13.cs#13)] [!code-vb[Cancellation#13](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cancellation/vb/cancellationex13.vb#13)] - リンクのトークンがスローした場合、例外に渡されるトークンは、先行タスクのトークンのいずれかのないリンク トークンです。 どちらのトークンが取り消されましたを特定するのには、直接先行タスクのトークンのステータスを確認します。 + リンクされたトークンから がスローされる場合、例外に渡されるトークンは先行トークンではなくリンクされたトークンです。 取り消されたトークンを特定するには、先行トークンの状態を直接確認します。 - この例ではをスローすることはないためここではキャッチされますが、実際のシナリオでその他の例外だけでなく、タスク デリゲートからスローされるでラップされます、です。 + この例で がスローされることはまずありませんが、実際のシナリオでは、タスクのデリゲートからスローされた 以外の例外はすべて にラップされるので、ここでキャッチされます。 -## 関連項目 +## 参照 [マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md) diff --git a/docs/standard/threading/how-to-register-callbacks-for-cancellation-requests.md b/docs/standard/threading/how-to-register-callbacks-for-cancellation-requests.md index f6aedada55f..a848307f211 100644 --- a/docs/standard/threading/how-to-register-callbacks-for-cancellation-requests.md +++ b/docs/standard/threading/how-to-register-callbacks-for-cancellation-requests.md @@ -11,23 +11,27 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: cancellation, how to register callbacks +helpviewer_keywords: +- cancellation, how to register callbacks ms.assetid: 8838dd75-18ed-4b8b-b322-cd4531faac64 -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 85b15ed610d80958ac9d7e3762ac8ea7b781b8d0 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b71ebee3a28fb6a829edf657f56e54799097f351 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: キャンセル要求のコールバックを登録する -次の例は、れるデリゲートを登録する方法を示しています。 ときに呼び出されます、プロパティが呼び出されたため true になるトークンを作成したオブジェクトにします。 この方法は、統合キャンセル フレームワークをネイティブにはサポートしていない非同期操作を取り消す場合や、非同期操作の終了を待機している可能性のあるメソッドのブロックを解除する場合に使用できます。 +次の例では、トークンを作成したオブジェクトに対する の呼び出しにより プロパティが true になったときに呼び出されるデリゲートを登録する方法を示します。 この方法は、統合キャンセル フレームワークをネイティブにはサポートしていない非同期操作を取り消す場合や、非同期操作の終了を待機している可能性のあるメソッドのブロックを解除する場合に使用できます。 > [!NOTE] -> [マイ コードのみ] が有効になっている場合、Visual Studio では、例外をスローする行で処理が中断され、"ユーザー コードで処理されない例外" に関するエラー メッセージが表示されることがあります。 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio の最初のエラーの処理は中断を防ぐために下にある [マイ コードのみ] チェック ボックスをオフにだけ**ツール、オプション、デバッグ、一般的な**します。 +> [マイ コードのみ] が有効になっている場合、Visual Studio では、例外をスローする行で処理が中断され、"ユーザー コードで処理されない例外" に関するエラー メッセージが表示されることがあります。 このエラーは問題にはなりません。 F5 キーを押して、処理が中断された箇所から続行し、以下の例に示す例外処理動作を確認できます。 Visual Studio による処理が最初のエラーで中断しないようにするには、**[ツール] メニューの [オプション]、[デバッグ] 、[全般]** の順にクリックし、[マイ コードのみ] チェック ボックスをオフにします。 ## 例 次の例では、 メソッドを、キャンセル トークンを通じてキャンセルが要求されたときに呼び出されるメソッドとして登録します。 @@ -37,5 +41,5 @@ ms.lasthandoff: 10/18/2017 コールバックを登録するときにキャンセルが既に要求されていても、コールバックは必ず呼び出されます。 このような場合、進行中の非同期操作がないと メソッドは何も実行しないので、このメソッドの呼び出しは常に安全です。 -## 関連項目 +## 参照 [マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md) diff --git a/docs/standard/threading/how-to-synchronize-concurrent-operations-with-a-barrier.md b/docs/standard/threading/how-to-synchronize-concurrent-operations-with-a-barrier.md index 8551296b462..655d87b61e2 100644 --- a/docs/standard/threading/how-to-synchronize-concurrent-operations-with-a-barrier.md +++ b/docs/standard/threading/how-to-synchronize-concurrent-operations-with-a-barrier.md @@ -11,28 +11,32 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: Barrier, how to use +helpviewer_keywords: +- Barrier, how to use ms.assetid: e1a253ff-e0fb-4df8-95ff-d01a90d4cb19 -caps.latest.revision: "10" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 0b2e32fe3cec30a4da7467447aee625dfe7e379b -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 616229abed93c6793b392724d038d8f9160cd6ae +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: バリアを使用して同時実行操作を同期する -次の例を使用して同時実行タスクを同期する方法を示しています、です。 +次の例は、 を使用して同時実行タスクを同期する方法を示しています。 ## 例 - 次のプログラムの目的がイテレーション (または段階) の数をカウントするで必要と各検索 を 2 つのスレッドのソリューションの半分同じ段階でランダム化アルゴリズムを使用して、単語をシャッフルします。 各スレッドには、単語がシャッフル後、barrier のフェーズ後の操作は完全な文が正しい単語の順序で表示されたかどうかに表示する 2 つの結果を比較します。 + 次のプログラムの目的は、単語を再シャッフルするためにランダム化アルゴリズムを使用して、同じフェーズで 2 つのスレッドのそれぞれのソリューションの半分を検索するのに必要な反復 (またはフェーズ) の数をカウントすることです。 各スレッドで単語をシャッフルした後、バリアのフェーズ後操作で 2 つの結果が比較され、完全な文が正しい語順でレンダリングされているかどうかが確認されます。 [!code-csharp[CDS_Barrier#01](../../../samples/snippets/csharp/VS_Snippets_Misc/cds_barrier/cs/barrier.cs#01)] [!code-vb[CDS_Barrier#01](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_barrier/vb/barrier_vb.vb#01)] - Aオブジェクトにより、すべてのタスクがバリアに到達するまで続行できなく並列操作の個々 のタスクです。 並列操作が、段階的で出現し、各フェーズのタスク間の同期が必要と便利です。 この例では、操作を 2 つのフェーズがあります。 最初のフェーズでは、各タスクは、データを含むバッファーの場合は、そのセクションを設定します。 各タスクでは、そのセクションの入力が完了したら、タスクは、操作を続行する準備ができたバリアし、待機を通知します。 すべてのタスクは、バリアに通知が、ブロックが解除され、2 番目のフェーズが開始されます。 バリアは、2 番目のフェーズでは、各タスクは、このポイントに生成されたすべてのデータへのアクセスである必要があるために必要があります。 バリア、せず、最初のタスクを完了するが入力されていないまだ他のタスクでバッファーからの読み込みしようとする可能性があります。 この方法で各フェーズの任意の数を同期することができます。 + はオブジェクトであり、すべてのタスクがバリアに到達するまで、並列操作の個々のタスクが続行されないようにします。 これは、並列操作を段階的に行う場合、および各フェーズでタスク間の同期が必要な場合に便利です。 この例では、2 つの操作フェーズがあります。 最初のフェーズでは、各タスクでバッファーのセクションにデータが読み込まれます。 各タスクでそのセクションへの読み込みが終了すると、タスクは続行する準備ができていることをバリアに通知してから、待機します。 すべてのタスクがバリアに通知した時点で、ブロックが解除され、2 番目のフェーズが開始されます。 2 番目のフェーズでは、各タスクがこれまでに生成されたすべてのデータにアクセスできる必要があるため、バリアが必要です。 バリアがないと、実行する最初のタスクで、他のタスクによってまだデータが読み込まれていないバッファーからの読み取りが試行される場合があります。 このように任意の数のフェーズを同期することができます。 -## 関連項目 +## 参照 [並列プログラミングのデータ構造](../../../docs/standard/parallel-programming/data-structures-for-parallel-programming.md) diff --git a/docs/standard/threading/how-to-use-spinlock-for-low-level-synchronization.md b/docs/standard/threading/how-to-use-spinlock-for-low-level-synchronization.md index b53cc5febb9..f4564b3a05b 100644 --- a/docs/standard/threading/how-to-use-spinlock-for-low-level-synchronization.md +++ b/docs/standard/threading/how-to-use-spinlock-for-low-level-synchronization.md @@ -11,32 +11,36 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: SpinLock, how to use +helpviewer_keywords: +- SpinLock, how to use ms.assetid: a9ed3e4e-4f29-4207-b730-ed0a51ecbc19 -caps.latest.revision: "15" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 30ddc7d340b210aaad4a04ea43e89555d2701f20 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 11d41a1fd04039fd08d945a72a37a479f79449a5 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: 下位レベルの同期に SpinLock を使用する -次の例で使用する方法、です。 + の使用例を以下に示します。 ## 例 - この例ではクリティカル セクションには最小限の作業は、これはにとって適切な候補を実行、です。 少量の作業を増やすとパフォーマンスが向上、標準的なロックを比較します。 ただし、SpinLock が標準ロックよりも高負荷になるポイントがあります。 プロファイリング ツールで同時実行プロファイリング機能を使用して、どのタイプのロックを使用すればプログラムのパフォーマンスが高まるかを確認できます。 詳細については、「[同時実行ビジュアライザー](/visualstudio/profiling/concurrency-visualizer)」を参照してください。 + この例では、クリティカル セクションが実行する作業量は最小限であるため、 に適しています。 作業量を少し増やすと、標準ロックと比較して のパフォーマンスは高まります。 ただし、SpinLock が標準ロックよりも高負荷になるポイントがあります。 プロファイリング ツールで同時実行プロファイリング機能を使用して、どのタイプのロックを使用すればプログラムのパフォーマンスが高まるかを確認できます。 詳細については、「[同時実行ビジュアライザー](/visualstudio/profiling/concurrency-visualizer)」を参照してください。 [!code-csharp[CDS_SpinLock#02](../../../samples/snippets/csharp/VS_Snippets_Misc/cds_spinlock/cs/spinlockdemo.cs#02)] [!code-vb[CDS_SpinLock#02](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_spinlock/vb/spinlock_vb.vb#02)] - 共有リソースのロックが保持されるを行わない場合に便利な場合あります非常に長いです。 そのような場合、マルチコア コンピューターでは、ロックが解除されるまで数回のサイクルの間、ブロックされたスレッドをスピンさせると効率が高まることがあります。 スピンするとスレッドはブロックされなくなりますが、これは CPU 負荷の高いプロセスです。 論理プロセッサまたはハイパー スレッディングのシステムで優先順位の逆転の枯渇を防ぐために特定の条件下でスピンは停止されます。 + は、共有リソースのロックが非常に長い期間使用されない場合に有用なことがあります。 そのような場合、マルチコア コンピューターでは、ロックが解除されるまで数回のサイクルの間、ブロックされたスレッドをスピンさせると効率が高まることがあります。 スピンするとスレッドはブロックされなくなりますが、これは CPU 負荷の高いプロセスです。 ハイパースレッディングを使用するシステムでは、 は特定の状況でスピンを停止して、論理プロセッサの不足や優先順位の逆転が発生するのを回避します。 - この例では、クラスは、マルチ スレッド アクセスをユーザーの同期が必要です。 アプリケーションで .NET Framework version 4 を対象とする、別のオプションが使用する、ユーザーのすべてのロックは不要です。 + この例では、 クラスを使用するため、マルチスレッド アクセスにはユーザーによる同期が必要になります。 .NET Framework Version 4 をターゲットにしているアプリケーションでは、ユーザーのロックが不要な を使用することもできます。 - 使用に注意してください`false`(`False` Visual Basic で) への呼び出しでです。 これにより、最適なパフォーマンスを得られます。 メモリ フェンスを使用するには、IA64 アーキテクチャで `true` (`True`) を指定します。これにより、書き込みバッファーがフラッシュされるので、ロックを使用して他のスレッドを終了できるようになります。 + の呼び出しに `false` (Visual Basic では `False`) が使用されていることに注目してください。 これにより、最適なパフォーマンスを得られます。 メモリ フェンスを使用するには、IA64 アーキテクチャで `true` (`True`) を指定します。これにより、書き込みバッファーがフラッシュされるので、ロックを使用して他のスレッドを終了できるようになります。 -## 関連項目 +## 参照 [スレッド処理オブジェクトと機能](../../../docs/standard/threading/threading-objects-and-features.md) diff --git a/docs/standard/threading/how-to-use-spinwait-to-implement-a-two-phase-wait-operation.md b/docs/standard/threading/how-to-use-spinwait-to-implement-a-two-phase-wait-operation.md index e39436d97fc..9c9a9df73fa 100644 --- a/docs/standard/threading/how-to-use-spinwait-to-implement-a-two-phase-wait-operation.md +++ b/docs/standard/threading/how-to-use-spinwait-to-implement-a-two-phase-wait-operation.md @@ -11,31 +11,35 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: SpinWait, how to synchronize two-phase wait +helpviewer_keywords: +- SpinWait, how to synchronize two-phase wait ms.assetid: b2ac4e4a-051a-4f65-b4b9-f8e103aff195 -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 2717ba2d63e4ecf40638c369b66f2c696e396a5e -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 63e4ea5c1c1d6143f1b6daa0312fa32b52af5787 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 方法: SpinWait を使用して 2 フェーズ待機操作を実装する -次の例を使用する方法を示しています、 2 フェーズ待機操作を実装するオブジェクト。 最初のフェーズでは、同期オブジェクトでは、`Latch`ロックが使用可能になるかどうかを確認中に、いくつかのサイクルを回転します。 ロックが使用可能になる場合、2 番目のフェーズでは、`Wait`メソッドを返しますを使用せず、実行待ち状態です。 それ以外の場合、`Wait`は待機を実行します。 +次の例では、 オブジェクトを使用して、2 フェーズ待機操作を実装する方法を示します。 最初のフェーズでは、同期オブジェクトである `Latch` は、ロックが使用可能になったかどうかを確認しながら、数回のサイクルの間スピンします。 2 番目のフェーズでは、ロックが使用可能になった場合に、`Wait` メソッドは待機を実行するために を使用せずに制御を返します (それ以外の場合、`Wait` は待機を実行します)。 ## 例 - この例は、プリミティブ ラッチ同期の非常に基本的な実装を示します。 非常に短い待機時間が予想される場合は、このデータ構造体を使用することができます。 この例はデモ目的でのみです。 ラッチ型機能をプログラムで必要とする場合は、使用を検討してです。 + この例では、ラッチ同期プリミティブの非常に基本的な実装を示します。 待機時間が非常に短くなると予測される場合は、このデータ構造を使用することができます。 この例は、デモンストレーション目的のみで提供されます。 プログラムでラッチ型機能が必要な場合は、 の使用を検討してください。 [!code-csharp[CDS_SpinWait#03](../../../samples/snippets/csharp/VS_Snippets_Misc/cds_spinwait/cs/spinwait03.cs#03)] [!code-vb[CDS_SpinWait#03](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_spinwait/vb/spinwait2.vb#03)] - ラッチを使用して、オブジェクトを次の呼び出しまでだけ回転`SpinOnce`により、スレッドのタイム スライスを生成します。 ラッチと呼び出すことによって、独自のコンテキスト スイッチをその時点では、上、とタイムアウト値の残りの部分で渡すことです。 + ラッチでは オブジェクトを使用して、次の `SpinOnce` の呼び出しで がスレッドのタイム スライスを生成するまでの間のみ、スピンが発生するようにします。 その時点で、 を呼び出し、残りのタイムアウト値を渡すことで、ラッチにより独自のコンテキスト切り替えが発生します。 - ラッチを使用せず、ロックを取得することによってパフォーマンスを向上させることがどのくらいの頻度、ログ出力を示しています、です。 + ログ出力には、 を使用せずにロックを取得することで、ラッチでパフォーマンスを向上させることができた頻度が示されます。 -## 関連項目 +## 参照 [SpinWait](../../../docs/standard/threading/spinwait.md) [スレッド処理オブジェクトと機能](../../../docs/standard/threading/threading-objects-and-features.md) diff --git a/docs/standard/threading/interlocked-operations.md b/docs/standard/threading/interlocked-operations.md index 033bd103c89..01ef224971b 100644 --- a/docs/standard/threading/interlocked-operations.md +++ b/docs/standard/threading/interlocked-operations.md @@ -16,47 +16,50 @@ helpviewer_keywords: - Interlocked class, about Interlocked class - threading [.NET Framework], Interlocked class ms.assetid: cbda7114-c752-4f3e-ada1-b1e8dd262f2b -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 122058b7e826e27fe6c60c5b07610f7c63e64f78 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c10c1188820b7a270baa0c51696974f93a8a2990 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # インタロックされた操作 -クラスは、複数のスレッドによって共有される変数へのアクセスを同期するメソッドを提供します。 この変数が共有メモリにある場合、さまざまなプロセスのスレッドがこのメカニズムを使用できます。 インタロックされた操作はアトミックです。つまり、その操作全体が 1 つの単位のため、同じ変数の別のインタロックされた操作によって中断されることはありません。 これは、メモリ アドレスから値を読み込んだ後、変更して格納できるようになる前にスレッドを中断できるプリエンプティブ マルチスレッドのオペレーティング システムで重要です。 + クラスでは、複数のスレッドによって共有されている変数へのアクセスを同期するメソッドが提供されます。 この変数が共有メモリにある場合、さまざまなプロセスのスレッドがこのメカニズムを使用できます。 インタロックされた操作はアトミックです。つまり、その操作全体が 1 つの単位のため、同じ変数の別のインタロックされた操作によって中断されることはありません。 これは、メモリ アドレスから値を読み込んだ後、変更して格納できるようになる前にスレッドを中断できるプリエンプティブ マルチスレッドのオペレーティング システムで重要です。 - クラスには、次の操作が用意されています。 + クラスでは次の操作が提供されます。 -- .NET framework version 2.0 では、メソッドが変数に整数値を追加し、変数の新しい値を返します。 +- .NET Framework Version 2.0 では、 メソッドは変数に整数値を追加して、変数の新しい値を返します。 -- .NET framework version 2.0 では、メソッドは、アトミックな操作として 64 ビット整数値を読み取ります。 これは、64 ビット整数の読み取りが通常はアトミック操作ではない 32 ビット オペレーティング システムでは有用です。 +- .NET Framework Version 2.0 では、 メソッドはアトミック操作として 64 ビットの整数値を読み取ります。 これは、64 ビット整数の読み取りが通常はアトミック操作ではない 32 ビット オペレーティング システムでは有用です。 -- メソッドはインクリメントまたは変数をデクリメントを結果の値を返します。 +- および メソッドは変数をインクリメントまたはデクリメントして、結果の値を返します。 -- メソッドは、指定した変数、その値を返すと、新しい値で置き換えることで、アトミック値の交換を実行します。 .NET Framework Version 2.0 では、任意の参照型の変数に対してこのメソッドのジェネリック オーバーロードを使用してこの交換を実行できます。 「」を参照してください。 +- メソッドは、指定された変数で値をアトミックに変換して値を返し、それを新しい値で置き換えます。 .NET Framework Version 2.0 では、任意の参照型の変数に対してこのメソッドのジェネリック オーバーロードを使用してこの交換を実行できます。 「」を参照してください。 -- メソッドとも交換 2 つの値が比較の結果 contingent です。 .NET Framework Version 2.0 では、任意の参照型の変数に対してこのメソッドのジェネリック オーバーロードを使用してこの交換を実行できます。 「」を参照してください。 +- メソッドでも 2 つの値を変換しますが、比較結果によって異なります。 .NET Framework Version 2.0 では、任意の参照型の変数に対してこのメソッドのジェネリック オーバーロードを使用してこの交換を実行できます。 「」を参照してください。 - 最新のプロセッサのメソッドで、多くの場合、1 つの命令でクラスを実装できます。 このため、非常にパフォーマンスの高い同期を行うことができ、それらを使用して、スピン ロックのようなより高レベルの同期メカニズムを作成することもできます。 + 最新のプロセッサでは、 クラスのメソッドを単一の命令で実装できる場合もよくあります。 このため、非常にパフォーマンスの高い同期を行うことができ、それらを使用して、スピン ロックのようなより高レベルの同期メカニズムを作成することもできます。 - 使用する例については、組み合わせで、クラスを参照してください[モニター](http://msdn.microsoft.com/library/33fe4aef-b44b-42fd-9e72-c908e39e75db)です。 + クラスと クラスを組み合わせて使用する例については、「[Monitor クラス](http://msdn.microsoft.com/library/33fe4aef-b44b-42fd-9e72-c908e39e75db)」を参照してください。 ## CompareExchange の例 - は単純なインクリメントおよびデクリメントより複雑な計算を保護するメソッドを使用できます。 次の例は、浮動小数点数として格納されている現在の合計に対して加算を行うスレッドセーフ メソッドを示しています (整数、用、メソッドは、簡単なソリューションです)。完全なコード例については、のオーバー ロードを参照してください。単精度と倍精度浮動小数点引数を受け取る ()。 + メソッドを使用して、単純なインクリメントまたはデクリメントよりも複雑な計算を保護できます。 次の例は、浮動小数点数として格納されている現在の合計に対して加算を行うスレッドセーフ メソッドを示しています (整数の場合は、 メソッドがより単純なソリューションとなります)。完全なコード例については、単精度と倍精度浮動小数点引数 () を受け取る のオーバーロードを参照してください。 [!code-cpp[Conceptual.Interlocked#1](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.interlocked/cpp/source1.cpp#1)] [!code-csharp[Conceptual.Interlocked#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.interlocked/cs/source1.cs#1)] [!code-vb[Conceptual.Interlocked#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.interlocked/vb/source1.vb#1)] ## Exchange および CompareExchange の型指定されていないオーバーロード - メソッド型の引数を受け取るオーバー ロードがありますです。 これらのオーバー ロードのそれぞれの最初の引数は`ref Object`(`ByRef … As Object` Visual Basic で)、タイプ セーフ必要として厳密に型指定するのには、この引数に渡された変数および; 入力に最初の引数をキャストできません単に。これらのメソッドを呼び出すときにします。 + および メソッドには、 型の引数を受け取るオーバーロードがあります。 各オーバーロードの最初の引数は `ref Object` (Visual Basic では `ByRef … As Object`) であり、タイプ セーフを確保するために、この引数に渡される変数は のように厳密に型指定される必要があります。これらのメソッドを呼び出すときに、単に最初の引数を型 にキャストするだけでは不十分です。 > [!NOTE] -> .NET Framework version 2.0 でのジェネリック オーバー ロードを使用して、強くを交換するメソッドの型指定される変数です。 +> .NET Framework Version 2.0 では、 および メソッドのジェネリック オーバーロードを使用して、厳密に型指定された変数を変換します。 一度だけ設定できる `ClassA` 型のプロパティのコード例を次に示します。このプロパティは、.NET Framework Version 1.0 または 1.1 で実装できます。 @@ -64,7 +67,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.Interlocked#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.interlocked/cs/source2.cs#2)] [!code-vb[Conceptual.Interlocked#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.interlocked/vb/source2.vb#2)] -## 関連項目 +## 参照 [スレッド化](../../../docs/standard/threading/index.md) diff --git a/docs/standard/threading/managed-and-unmanaged-threading-in-windows.md b/docs/standard/threading/managed-and-unmanaged-threading-in-windows.md index da2917658ca..05fd2e82e72 100644 --- a/docs/standard/threading/managed-and-unmanaged-threading-in-windows.md +++ b/docs/standard/threading/managed-and-unmanaged-threading-in-windows.md @@ -13,22 +13,25 @@ helpviewer_keywords: - threading [.NET Framework], managed - managed threading ms.assetid: 4fb6452f-c071-420d-9e71-da16dee7a1eb -caps.latest.revision: "17" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 3c55caaff3fd96b2791e75a392a9522abfceb22e -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2ce17ef15a5b582a9df0f16d7e0ac82df626579d +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/19/2018 --- # Windows でのマネージ スレッド処理とアンマネージ スレッド処理 -共通言語ランタイムにより作成されたスレッド、マネージ環境に入ってコードを実行するランタイム外部で作成されたスレッドなど、すべてのスレッドの管理は、 クラスを使用して行われます。 ランタイムは、プロセス内のスレッドのうち、マネージ実行環境内でコードを実行したすべてのスレッドを監視します。 その他のスレッドは追跡しません。 ランタイムがマネージ オブジェクトを COM オブジェクトとしてアンマネージ環境に公開するため、スレッドは COM 相互運用を使用してマネージ実行環境に入ることができます。また、COM [DllGetClassObject](https://msdn.microsoft.com/en-us/library/ms680760.aspx) 関数やプラットフォーム呼び出しを介してマネージ実行環境に入ることもできます。 +共通言語ランタイムにより作成されたスレッド、マネージ環境に入ってコードを実行するランタイム外部で作成されたスレッドなど、すべてのスレッドの管理は、 クラスを使用して行われます。 ランタイムは、プロセス内のスレッドのうち、マネージ実行環境内でコードを実行したすべてのスレッドを監視します。 その他のスレッドは追跡しません。 ランタイムがマネージ オブジェクトを COM オブジェクトとしてアンマネージ環境に公開するため、スレッドは COM 相互運用を使用してマネージ実行環境に入ることができます。また、COM [DllGetClassObject](https://msdn.microsoft.com/library/ms680760.aspx) 関数やプラットフォーム呼び出しを介してマネージ実行環境に入ることもできます。 ただしアンマネージ スレッドが COM 呼び出し可能ラッパーなどを介してランタイムに入ると、システムがそのスレッド ローカル ストアで内部マネージ オブジェクトを検索します。 このオブジェクトが見つかった場合、ランタイムは既にこのスレッドを認識しています。 見つからない場合、ランタイムは新しい オブジェクトを作成し、そのスレッドのスレッド ローカル ストアにインストールします。 - マネージ スレッド処理で安定したマネージ スレッド id。 この値は、取得されたアプリケーション ドメインに関係なく、スレッドの有効期間にわたって他のスレッドの値と競合することはありません。 + マネージ スレッド処理では、 は安定したマネージ スレッド ID です。 この値は、取得されたアプリケーション ドメインに関係なく、スレッドの有効期間にわたって他のスレッドの値と競合することはありません。 > [!NOTE] > オペレーティング システム **ThreadId** とマネージ スレッドの間には固定的な関係はありません。これは、アンマネージ ホストがマネージ スレッドとアンマネージ スレッドの間の関係を制御できるためです。 特に、高度なホストはファイバー API を使用して、多数のマネージ スレッドを同一オペレーティング システム スレッドに対してスケジュールしたり、マネージ スレッドを異なるオペレーティング システム スレッド間で移動したりできます。 @@ -52,9 +55,9 @@ ms.lasthandoff: 11/21/2017 |**CoInitializeEx** (OLE32.DLL) に類似|| ## マネージ スレッドと COM アパートメント - マネージ スレッドには、[シングル スレッド](http://msdn.microsoft.com/library/windows/desktop/ms680112.aspx) アパートメントをホストするか、[マルチ スレッド](http://msdn.microsoft.com/library/windows/desktop/ms693421.aspx) アパートメントをホストするかを示すようマークすることができます (COM スレッド アーキテクチャの詳細については、「[プロセス、スレッド、アパートメント](http://msdn.microsoft.com/library/windows/desktop/ms693344.aspx)」を参照してください。) クラスの 、および の各スレッドは、スレッドのアパートメント状態を返して割り当てます。 状態が設定されていない場合返しますです。 + マネージ スレッドには、[シングル スレッド](http://msdn.microsoft.com/library/windows/desktop/ms680112.aspx) アパートメントをホストするか、[マルチ スレッド](http://msdn.microsoft.com/library/windows/desktop/ms693421.aspx) アパートメントをホストするかを示すようマークすることができます (COM スレッド アーキテクチャの詳細については、「[プロセス、スレッド、アパートメント](http://msdn.microsoft.com/library/windows/desktop/ms693344.aspx)」を参照してください。) クラスの 、および の各スレッドは、スレッドのアパートメント状態を返して割り当てます。 状態が設定されていない場合、 を返します。 - プロパティは、スレッドがである場合にのみ設定できます、 ; の状態のスレッドの 1 回だけ設定できます。 + プロパティは、スレッドが 状態の場合にのみ設定することができます。設定できるのは、1 つのスレッドにつき 1 回だけです。 スレッド開始前にアパートメントの状態が設定されていない場合、このスレッドはマルチスレッド アパートメント (MTA) として初期化されます。 ファイナライザー スレッドと、 により制御されるすべてのスレッドは MTA です。 @@ -63,14 +66,14 @@ ms.lasthandoff: 11/21/2017 COM に対して公開されるマネージ オブジェクトは、フリー スレッド マーシャラーを集約した場合と同様に動作します。 つまり、フリースレッドな方法ですべての COM アパートメントから呼び出すことができます。 このフリー スレッドな動作を示さないマネージ オブジェクトは、 または から派生したオブジェクトだけです。 - マネージ環境では、コンテキストおよびコンテキストにバインディングされたインスタンスを使用しない場合には はサポートされません。 エンタープライズ サービスを使用しているかどうかは、オブジェクトから派生しなければなりません(自体から派生した)。 + マネージ環境では、コンテキストおよびコンテキストにバインディングされたインスタンスを使用しない場合には はサポートされません。 Enterprise Services を使う場合は、オブジェクトを ( から派生したオブジェクト) から派生する必要があります。 マネージ コードは、COM オブジェクトを呼び出すときには常に COM 規則に従います。 つまり、OLE32 によって示される COM アパートメント プロキシと COM+ 1.0 コンテキスト ラッパーを介して呼び出します。 ## ブロッキングの問題 - アンマネージ コードでスレッドをブロックしているオペレーティング システムに対し、そのスレッドがアンマネージ呼び出しを実行する場合、ランタイムは または に対してその呼び出しを制御しません。 場合、 、ランタイムのスレッドをマークする**中止**が再びマネージ コードに入るときにその制御とします。 アンマネージ ブロックではなくマネージ ブロックを使用することをお勧めします。 などへの応答がすべて、にされ、です。 また、スレッドがシングルスレッド アパート内にある場合、これらのマネージ ブロック操作はすべて、スレッドがブロックされている間でもアパートメント内で正しくメッセージ ポンプを行います。 + アンマネージ コードでスレッドをブロックしているオペレーティング システムに対し、そのスレッドがアンマネージ呼び出しを実行する場合、ランタイムは または に対してその呼び出しを制御しません。 では、スレッドが再びマネージ コードに入ると、ランタイムはスレッドを **Abort** 対象としてマークし、スレッドを制御します。 アンマネージ ブロックではなくマネージ ブロックを使用することをお勧めします。 などはすべて、 に応答します。 また、スレッドがシングルスレッド アパート内にある場合、これらのマネージ ブロック操作はすべて、スレッドがブロックされている間でもアパートメント内で正しくメッセージ ポンプを行います。 -## 関連項目 +## 参照 diff --git a/docs/standard/threading/managed-thread-states.md b/docs/standard/threading/managed-thread-states.md index 82047f04737..3cb361d2a5b 100644 --- a/docs/standard/threading/managed-thread-states.md +++ b/docs/standard/threading/managed-thread-states.md @@ -8,20 +8,24 @@ ms.suite: ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article -helpviewer_keywords: threading [.NET Framework], states +helpviewer_keywords: +- threading [.NET Framework], states ms.assetid: 63890d5e-6025-4a7c-aaf0-d8bfd54b455f -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 073fb19ef34ba32ccb5d5664413718a436563770 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 956472ef0e3b0bab85a4eb0b5585f1a4d1e0a991 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # マネージ スレッドの状態 -プロパティスレッドの現在の状態を示すビット マスクを提供します。 スレッドは、 列挙型に含まれる状態のうち、常に少なくとも 1 つの状態となり、同時に複数の状態になることもあります。 +プロパティ には、スレッドの現在の状態を示すビット マスクが用意されています。 スレッドは、 列挙型に含まれる状態のうち、常に少なくとも 1 つの状態となり、同時に複数の状態になることもあります。 > [!IMPORTANT] > スレッドの状態は、いくつかのデバッグ シナリオでのみ必要になります。 スレッドの動作を同期化する目的でコード内でスレッドの状態を使用しないでください。 @@ -33,16 +37,16 @@ ms.lasthandoff: 11/21/2017 |アクション|変更後の新しい状態| |------------|-------------------------| | クラスのコンストラクターが呼び出される。|| -|別のスレッド呼び出しです。|| -|スレッドが応答するして実行を開始します。|| -|スレッドの呼び出しです。|| -|スレッドの呼び出し別のオブジェクトにします。|| -|スレッドの呼び出し別のスレッドでします。|| -|別のスレッド呼び出しです。|| -|スレッドが応答する、要求します。|| -|別のスレッド呼び出しです。|| -|別のスレッド呼び出しです。|| -|スレッドが応答する、です。|の後 | +|別のスレッドが を呼び出す。|| +|スレッドが に応答して実行を開始する。|| +|スレッドが を呼び出す。|| +|スレッドが別のオブジェクトで を呼び出す。|| +|スレッドが別のスレッドで を呼び出す。|| +|別のスレッドが を呼び出す。|| +|スレッドが 要求に応答する。|| +|別のスレッドが を呼び出す。|| +|別のスレッドが を呼び出す。|| +|スレッドが に応答する。|の後 | 状態の値は 0 のため、ビット テストを実行しても、この状態を検出できません。 代わりに、擬似コードによる次のテストを実行できます。 @@ -50,11 +54,11 @@ ms.lasthandoff: 11/21/2017 if ((state & (Unstarted | Stopped)) == 0) // implies Running ``` - スレッドは、どの時点でも複数の状態にあることがよくあります。 などのスレッドがブロックされている場合、呼び出しと別のスレッドの呼び出しその同じスレッドでスレッドされます両方で、同時状態です。 この場合、スレッドは、 への呼び出しから戻るか中断されるとすぐに、 を受け取ります。 + スレッドは、どの時点でも複数の状態にあることがよくあります。 たとえば、 呼び出しでスレッドがブロックされ、別のスレッドが同じスレッドに対して を呼び出した場合、スレッドは同時に 状態と 状態になります。 この場合、スレッドは、 への呼び出しから戻るか中断されるとすぐに、 を受け取ります。 スレッドは、 への呼び出しの結果として 状態から出ると、 状態に戻ることはできません。 また、スレッドは 状態から出ることはできません。 -## 関連項目 +## 参照 diff --git a/docs/standard/threading/managed-threading-basics.md b/docs/standard/threading/managed-threading-basics.md index 74941dc12af..7a7e4386480 100644 --- a/docs/standard/threading/managed-threading-basics.md +++ b/docs/standard/threading/managed-threading-basics.md @@ -14,65 +14,68 @@ helpviewer_keywords: - threading [.NET Framework], about threading - managed threading ms.assetid: b2944911-0e8f-427d-a8bb-077550618935 -caps.latest.revision: "16" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 62c207f6074e33813887c6903f5285ee72d14e85 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 035834959aa5f9340727327b22cae93b3f21b056 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # マネージ スレッド処理の基本 -このセクションの最初の 5 つのトピックでは、どのようなときか、マネージ スレッド処理を使用して、いくつかの基本的な機能について説明します。 その他の機能を提供するクラスについては、次を参照してください。[スレッド処理オブジェクトと機能](../../../docs/standard/threading/threading-objects-and-features.md)と[同期プリミティブの概要](../../../docs/standard/threading/overview-of-synchronization-primitives.md)です。 +このセクションの最初の 5 つのトピックは、マネージ スレッド処理を使用するタイミングを判断するのに役立つように設計されており、また、いくつかの基本的な機能について説明するためのものです。 その他の機能を提供するクラスについては、「[スレッド処理オブジェクトと機能](../../../docs/standard/threading/threading-objects-and-features.md)」と「[同期プリミティブの概要](../../../docs/standard/threading/overview-of-synchronization-primitives.md)」を参照してください。 - このセクションでカバーのトピックの残りの部分には、Windows オペレーティング システムとマネージ スレッド処理とのやり取りなどのトピックが高度な。 + このセクションの残りのトピックには、マネージ スレッド処理と Windows オペレーティング システムとの相互作用など、高度なトピックが含まれます。 > [!NOTE] -> [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]、タスク並列ライブラリおよび PLINQ は、マルチ スレッド プログラムでのタスクとデータの並列処理の Api を提供します。 詳細については、[並列プログラミング](../../../docs/standard/parallel-programming/index.md)に関するページをご覧ください。 +> [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] では、タスク並列ライブラリと PLINQ は、マルチスレッド プログラムでのタスクとデータの並列処理のための API を提供します。 詳細については、[並列プログラミング](../../../docs/standard/parallel-programming/index.md)に関するページをご覧ください。 ## このセクションの内容 [スレッドおよびスレッド処理](../../../docs/standard/threading/threads-and-threading.md) - 利点と、複数のスレッドの欠点について説明しするまたはスレッドを作成する場合があります、スレッド プールのスレッドを使用できるシナリオの概要を示します。 + 複数のスレッドの利点と欠点について説明し、スレッドを作成またはスレッド プール スレッドを使用する可能性のあるシナリオの概要を示します。 [マネージ スレッドの例外](../../../docs/standard/threading/exceptions-in-managed-threads.md) - 具体的には、ような状況で異なるバージョンの .NET Framework 用のスレッドでハンドルされない例外の動作を説明するその結果、アプリケーションの終了にします。 + さまざまなバージョンの .NET Framework のスレッドでのハンドルされていない例外の動作、特に、アプリケーションの終了の原因となる状況について説明します。 [マルチスレッド処理のためのデータの同期](../../../docs/standard/threading/synchronizing-data-for-multithreading.md) 複数のスレッドで使用されるクラスのデータを同期する方法について説明します。 [マネージ スレッドの状態](../../../docs/standard/threading/managed-thread-states.md) - 基本的なスレッドの状態と、スレッドが実行されているかどうかを検出する方法を説明します。 + 基本的なスレッドの状態と、スレッドが実行されているかどうかの検出方法について説明します。 [フォアグラウンド スレッドとバックグラウンド スレッド](../../../docs/standard/threading/foreground-and-background-threads.md) - フォア グラウンドとバック グラウンド スレッド間の相違点をについて説明します。 + フォアグラウンド スレッドとバック グラウンド スレッドの違いについて説明します。 [Windows でのマネージ スレッド処理とアンマネージ スレッド処理](../../../docs/standard/threading/managed-and-unmanaged-threading-in-windows.md) - マネージ コードとアンマネージ スレッド処理の間のリレーションシップについて説明します、リスト相当するマネージ スレッド処理 Api、Windows 用および COM アパートメントおよびマネージ スレッドの相互作用について説明します。 + マネージ スレッド処理とアンマネージ スレッド処理の関係について説明し、Windows のスレッド処理 API に相当するマネージ API をリストし、COM アパートメントとマネージ スレッドの相互作用について説明します。 [Thread.Suspend、ガベージ コレクション、およびセーフ ポイント](../../../docs/standard/threading/thread-suspend-garbage-collection-and-safe-points.md) - スレッドの中断、ガベージ コレクションをについて説明します。 + スレッドの中断とガベージ コレクションについて説明します。 [スレッド ローカル ストレージ: スレッド相対静的フィールドとデータ スロット](../../../docs/standard/threading/thread-local-storage-thread-relative-static-fields-and-data-slots.md) - スレッドごとの相対ストレージ機構をについて説明します。 + スレッド相対ストレージ メカニズムについて説明します。 [マネージ スレッドのキャンセル](../../../docs/standard/threading/cancellation-in-managed-threads.md) - 非同期操作または長時間同期操作について説明します、キャンセル トークンを使用して取り消されたことができます。 + 取り消しトークンを使用して、非同期または長時間実行されている同期操作の取り消し方法について説明します。 ## 参照 **Thread** クラスのリファレンス ドキュメントです。このクラスは、アンマネージ コードから作成されたか、マネージ アプリケーションで作成されたかにかかわらず、マネージ スレッドを表します。 - 実装する安全な方法は、ユーザー インターフェイス オブジェクトと共にマルチ スレッドです。 + ユーザー インターフェイス オブジェクトと共にマルチスレッドを実装するための安全な方法を提供します。 ## 関連項目 [同期プリミティブの概要](../../../docs/standard/threading/overview-of-synchronization-primitives.md) - 複数のスレッドの活動を同期するために使用するマネージ クラスについて説明します。 + 複数のスレッドのアクティビティを同期するために使用されるマネージ クラスについて説明します。 [マネージ スレッド処理の実施](../../../docs/standard/threading/managed-threading-best-practices.md) - に関する一般的な問題について説明するマルチ スレッドおよび問題を回避するための方法です。 + マルチスレッドに関する一般的な問題と、問題を回避するための方法について説明します。 [並列プログラミング](../../../docs/standard/parallel-programming/index.md) - タスク並列ライブラリおよび PLINQ では、非同期およびマルチ スレッドの .NET Framework アプリケーションを作成する作業を大幅に簡素化について説明します。 + 非同期およびマルチスレッドの .NET Framework アプリケーションを作成する作業を大幅に簡素化する、タスク並列ライブラリと PLINQ について説明します。 diff --git a/docs/standard/threading/managed-threading-best-practices.md b/docs/standard/threading/managed-threading-best-practices.md index 2c7a28f5c2f..ef0db0a4f86 100644 --- a/docs/standard/threading/managed-threading-best-practices.md +++ b/docs/standard/threading/managed-threading-best-practices.md @@ -16,21 +16,24 @@ helpviewer_keywords: - threading [.NET Framework], best practices - managed threading ms.assetid: e51988e7-7f4b-4646-a06d-1416cee8d557 -caps.latest.revision: "19" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: e396bb1f6a710e49e311ca1526a7aae9bca7bf90 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: c23ef17e2bf2bec389368d1b9d88d11723ef531e +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # マネージ スレッド処理の実施 マルチスレッドには慎重なプログラミングが必要です。 ほとんどのタスクでは、スレッド プールのスレッドを使って実行の要求をキューに置くことによって、処理の複雑さを軽減できます。 このトピックでは、マルチ スレッド動作の調整や、ブロックするスレッドの処理など、より難しい状況について説明します。 > [!NOTE] -> 複雑さの一部とマルチ スレッド プログラミングのリスクを軽減する Api は、.NET Framework 4 以降では Task Parallel Library および PLINQ から提供します。 詳細については、次を参照してください。 [.NET での並行プログラミング](../../../docs/standard/parallel-programming/index.md)です。 +> .NET Framework 4 以降では、マルチスレッド プログラミングの複雑さとリスクを軽減する API が Task Parallel Library および PLINQ に用意されています。 詳細については、[.NET の並列プログラミング](../../../docs/standard/parallel-programming/index.md)に関するページをご覧ください。 ## デッドロックと競合状態 マルチスレッドはスループットと応答速度の問題を解決しますが、その一方で、デッドロックと競合状態という新たな問題を発生させます。 @@ -38,7 +41,7 @@ ms.lasthandoff: 11/21/2017 ### デッドロック デッドロックは、2 つのスレッドのうちの一方が、もう一方によって既にロックされているリソースをロックしようとすると発生します。 こうなると、どちらのスレッドも続行できなくなります。 - マネージ スレッド処理クラスの多くのメソッドには、ロックアウトを検出するためのタイムアウト機能が用意されています。 たとえば、次のコードがという名前のオブジェクトに対するロックを取得しようと`lockObject`です。 ロックが 300 ミリ秒単位で取得されていない場合返します`false`です。 + マネージ スレッド処理クラスの多くのメソッドには、ロックアウトを検出するためのタイムアウト機能が用意されています。 たとえば、`lockObject` というオブジェクトへのロックの取得を試みるコードを次に示します。 ロックが 300 ミリ秒の間に得られない場合は、 は `false` を返します。 ```vb If Monitor.TryEnter(lockObject, 300) Then @@ -122,7 +125,7 @@ else { - インスタンスをロックする場合 (たとえば、C# の `lock(this)`、Visual Basic の `SyncLock(Me)`) には注意してください。 アプリケーション内の、その型以外の他のコードがオブジェクトをロックすると、デッドロックが発生する場合があります。 -- モニター状態に入った (ロックを取得した) スレッドは、モニター状態である間に例外が発生した場合でも、必ずモニター状態から出すようにします。 C#[ロック](~/docs/csharp/language-reference/keywords/lock-statement.md)ステートメントと Visual Basic [SyncLock](~/docs/visual-basic/language-reference/statements/synclock-statement.md)ステートメントこの動作を自動的に提供を採用すること、 **finally**いることを確認するブロックはと呼ばれる。 **Exit** を確実に呼び出すことができない場合は、**Mutex** を使用するようにデザインを変更することを検討してください。 ミューテックスは、現在それを保持しているスレッドが終了すると、自動的に解放されます。 +- モニター状態に入った (ロックを取得した) スレッドは、モニター状態である間に例外が発生した場合でも、必ずモニター状態から出すようにします。 C# の [lock](~/docs/csharp/language-reference/keywords/lock-statement.md) ステートメントと Visual Basic の [SyncLock](~/docs/visual-basic/language-reference/statements/synclock-statement.md) ステートメントは、**finally** ブロックを使用して が呼び出されるようにすることで、この動作を自動的に提供します。 **Exit** を確実に呼び出すことができない場合は、**Mutex** を使用するようにデザインを変更することを検討してください。 ミューテックスは、現在それを保持しているスレッドが終了すると、自動的に解放されます。 - マルチ スレッドは異なるリソースを必要とするタスクに使用し、1 つのリソースに複数のスレッドを割り当てることがないように注意します。 たとえば、I/O を含む作業であれば、その作業専用のスレッドを用意すると有益です。I/O 操作の間、このスレッドはブロックを行いますが、他のスレッドは実行できるからです。 ユーザー入力も、専用のスレッドが役に立つリソースの 1 つです。 シングル プロセッサのコンピューターでは、計算中心のタスクがユーザー入力や I/O タスクと共存することはできますが、計算中心タスクどうしは競合してしまいます。 @@ -203,6 +206,6 @@ else { - 静的状態を変更する静的メソッドは提供しないでください。 一般的なサーバーのシナリオでは、静的状態は要求間で共有されます。つまり、複数のスレッドがそのコードを同時に実行できます。 これにより、スレッド処理のバグが発生する可能性が高くなります。 要求間で共有されないインスタンスにデータをカプセル化するデザイン パターンの使用を検討してください。 加えて、静的なデータを同期する場合は、状態を変更する呼び出しが静的メソッド間にあると、デッドロックや冗長な同期が生じる可能性があり、パフォーマンスに悪影響を及ぼします。 -## 関連項目 +## 参照 [スレッド化](../../../docs/standard/threading/index.md) [スレッドおよびスレッド処理](../../../docs/standard/threading/threads-and-threading.md) diff --git a/docs/standard/threading/manualresetevent-and-manualreseteventslim.md b/docs/standard/threading/manualresetevent-and-manualreseteventslim.md index f833474e92a..49d60c8a848 100644 --- a/docs/standard/threading/manualresetevent-and-manualreseteventslim.md +++ b/docs/standard/threading/manualresetevent-and-manualreseteventslim.md @@ -12,24 +12,27 @@ helpviewer_keywords: - threading [.NET Framework], ManualResetEvent class - ManualResetEvent class, about ManualResetEvent class ms.assetid: 465fdcf9-ba24-4d8d-a43f-d983b7cb0cc6 -caps.latest.revision: "17" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: f663dd17b063f77e2f9ce6bd4bbd0f8859ba4116 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: b90a84cf87c6c64d48d89840e2213d83b2e39d44 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # ManualResetEvent と ManualResetEventSlim -クラスを表します。 ローカルの待機ハンドルのイベントがシグナル通知された後に手動でリセットする必要があります。 このクラスは、その基本クラスの特殊なケースを表しますです。 手動リセット イベントの使用方法と機能については、[EventWaitHandle](../../../docs/standard/threading/eventwaithandle.md) の概念に関する文書を参照してください。 + クラスはローカル待機ハンドル イベントを表します。これは、シグナル状態になった後、手動でリセットする必要があります。 このクラスは、その基底クラス の特殊なケースを表します。 手動リセット イベントの使用方法と機能については、[EventWaitHandle](../../../docs/standard/threading/eventwaithandle.md) の概念に関する文書を参照してください。 - Aオブジェクトはまでシグナル状態のまま、メソッドが呼び出されます。 待機スレッド、つまりイベントがシグナル状態になるまで待機するスレッドは、そのオブジェクトがシグナル状態である間にいくつでも解放できます。 Win32 に対応する`CreateEvent`を呼び出すと、指定する`true`の`bManualReset`引数。 + オブジェクトは、 メソッドが呼び出されるまでシグナル状態のままです。 待機スレッド、つまりイベントがシグナル状態になるまで待機するスレッドは、そのオブジェクトがシグナル状態である間にいくつでも解放できます。 は、`bManualReset` 引数に対して `true` を指定する、Win32 `CreateEvent` 呼び出しに対応します。 - [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]、使用することができます、パフォーマンス向上のため、クラスの待機時間が非常に短くなると予想される場合、およびイベントは、プロセス境界を越えないです。 シグナル状態になるイベントを待機している間、短い時間スピン ビジー状態であるを使用します。 待機時間が短い場合、待機ハンドルを使用して待機するより、スピンを使用するほうが負荷が大幅に低くなります。 ただし、イベントが一定期間内でシグナル状態になるいない場合は、正規イベント ハンドルの待機を使用します。 + [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] では、待機時間が非常に短いと予測される場合とイベントがプロセスの境界を越えない場合に、 クラスを使用してパフォーマンスを高めることができます。 は、イベントがシグナル状態になるまで待機している間、ビジー スピンを短時間使用します。 待機時間が短い場合、待機ハンドルを使用して待機するより、スピンを使用するほうが負荷が大幅に低くなります。 ただし、特定の期間内にイベントがシグナル状態にならない場合、 は通常のイベント ハンドル待機を使用します。 -## 関連項目 +## 参照 [スレッド化](../../../docs/standard/threading/index.md) [スレッド処理オブジェクトと機能](../../../docs/standard/threading/threading-objects-and-features.md) [待機ハンドル](http://msdn.microsoft.com/library/48d10b6f-5fd7-407c-86ab-0179aef72489) diff --git a/docs/standard/threading/mutexes.md b/docs/standard/threading/mutexes.md index 333e22890c6..7bea9c6571b 100644 --- a/docs/standard/threading/mutexes.md +++ b/docs/standard/threading/mutexes.md @@ -14,49 +14,52 @@ helpviewer_keywords: - Mutex class, about Mutex class - threading [.NET Framework], cross-process synchronization ms.assetid: 9dd06e25-12c0-4a9e-855a-452dc83803e2 -caps.latest.revision: "15" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: a1d69c1b943d15b9ad8c80b4d7dbafebc54990ab -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 2804d0c60657623b558d86386c5e1043422b648c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # ミューテックス -使用することができます、リソースへの排他アクセスを提供するオブジェクト。 クラスよりも多くのシステム リソースを使用して、クラスが、それをアプリケーション ドメインの境界を越えてマーシャ リングできる、複数の待機時間で使えるおよび異なるプロセスでスレッドを同期するために使用できます。 マネージ同期メカニズムの比較については、「[同期プリミティブの概要](../../../docs/standard/threading/overview-of-synchronization-primitives.md)」を参照してください。 + オブジェクトを使用して、リソースへの排他的アクセスを提供できます。 クラスは クラスよりも多くのシステム リソースを使用しますが、アプリケーション ドメイン境界を越えてマーシャリングしたり、複数の待機操作とともに使用したり、異なるプロセスのスレッドを同期するために使用できます。 マネージ同期メカニズムの比較については、「[同期プリミティブの概要](../../../docs/standard/threading/overview-of-synchronization-primitives.md)」を参照してください。 - コード例については、リファレンス ドキュメントを参照して、コンス トラクターです。 + コード例については、 コンストラクターのリファレンス ドキュメントを参照してください。 ## ミューテックスの使用 - スレッドが呼び出す、所有権を要求するミュー テックスのメソッドです。 この呼び出しは、ミューテックスを使用できるようになるまで、あるいはオプションのタイムアウト期間を超過するまでブロックします。 所有しているスレッドがない場合、ミューテックスはシグナル状態になります。 + スレッドはミューテックスの メソッドを呼び出して、所有権を要求します。 この呼び出しは、ミューテックスを使用できるようになるまで、あるいはオプションのタイムアウト期間を超過するまでブロックします。 所有しているスレッドがない場合、ミューテックスはシグナル状態になります。 - スレッドが呼び出すことにより、ミュー テックスを解放そのメソッドです。 ミューテックスにはスレッド アフィニティがあります。つまり、ミューテックスはそれを所有するスレッドによってのみ解放することができます。 スレッドが所有していないミュー テックスを解放する場合、スレッドでスローされます。 + スレッドは メソッドを呼び出して、ミューテックスを解放します。 ミューテックスにはスレッド アフィニティがあります。つまり、ミューテックスはそれを所有するスレッドによってのみ解放することができます。 スレッドが所有していないミューテックスを解放すると、スレッドで がスローされます。 - クラスから派生、静的なを呼び出すこともできますまたはのメソッドの所有権を要求する、を他の組み合わせでは、待機ハンドル。 + クラスは から派生するため、 の静的な または メソッドを呼び出し、他の待機ハンドルと組み合わせで の所有権を要求することもできます。 - スレッドが所有している場合、 、スレッド、同じを指定することができます; の実行をブロックすることがなく待機要求の連続呼び出しでただし、そのリリースする必要があります、所有権を解放する回数だけです。 + スレッドが を所有している場合、そのスレッドは待機要求呼び出しを繰り返し行うときに、実行をブロックせずに同じ を指定できます。ただし、呼び出しと同じ回数だけ を解放して、その所有権を解放する必要があります。 ## 破棄済みミューテックス - スレッドが解放せずに終了した場合、 、ミュー テックスを破棄すると言います。 ミューテックスが保護しているリソースが矛盾した状態で残る可能性があるため、多くの場合、これは重大なプログラミング エラーを示します。 .NET framework version 2.0 では、ミュー テックスを取得する次のスレッドでスローされます。 + を解放せずにスレッドが終了すると、ミューテックスは破棄されたと見なされます。 ミューテックスが保護しているリソースが矛盾した状態で残る可能性があるため、多くの場合、これは重大なプログラミング エラーを示します。 .NET Framework Version 2.0 では、ミューテックスを取得する次のスレッドで がスローされます。 > [!NOTE] -> .NET Framework version 1.0 および 1.1 では、破棄済み、取得所有権のスレッドが待機してと次のシグナルの状態に設定します。 スレッドが待機していない場合、シグナルの状態のままになります。 例外をスローすることはありません。 +> .NET Framework Version 1.0 および 1.1 では、破棄された はシグナル状態に設定され、次の待機スレッドが所有権を取得します。 待機しているスレッドがない場合、 はシグナル状態のままになります。 例外をスローすることはありません。 システム全体でミューテックスが有効な場合にミューテックスが破棄されたときは、アプリケーションが強制終了されたことを示している可能性があります (たとえば、Windows タスク マネージャを使用した終了)。 ## ローカル ミューテックスとシステム ミューテックス - ミュー テックスには、ローカル ミューテックスと名前付きシステム ミューテックスという 2 つの種類があります。 作成する場合、オブジェクトの名前を受け取るコンス トラクターを使用してその名前のオペレーティング システム オブジェクトに関連付けられています。 名前付きシステム ミューテックスは、オペレーティング システム全体から参照でき、プロセスの動作を同期するために使用できます。 複数作成できます名前付きシステム ミュー テックスを同じを表すオブジェクトと、使用することができます、を開くには、既存のメソッドに名前付きシステム ミュー テックスです。 + ミュー テックスには、ローカル ミューテックスと名前付きシステム ミューテックスという 2 つの種類があります。 名前を受け入れるコンストラクターを使用して オブジェクトを作成すると、そのオブジェクトがその名前のオペレーティング システム オブジェクトに関連付けられます。 名前付きシステム ミューテックスは、オペレーティング システム全体から参照でき、プロセスの動作を同期するために使用できます。 同じ名前付きシステム ミューテックスを表す複数の オブジェクトを作成できます。また、 メソッドを使用して、既存の名前付きシステム ミューテックスを開くことができます。 - ローカル ミューテックスは、現在のプロセス内にのみ存在します。 ローカルへの参照を含むプロセス内の任意のスレッドで使用できますオブジェクト。 各オブジェクトが別のローカル ミュー テックスです。 + ローカル ミューテックスは、現在のプロセス内にのみ存在します。 ローカル オブジェクトを参照するプロセス内のすべてのスレッドから使用できます。 オブジェクトはそれぞれ別のローカル ミューテックスです。 ### システム ミューテックスのアクセス制御セキュリティ .NET Framework Version 2.0 では、名前付きシステム オブジェクトに対して Windows アクセス制御セキュリティを照会して設定できます。 システム オブジェクトはグローバルであり、所有するコード以外のコードによってロックできるため、作成時からシステム ミューテックスを保護することをお勧めします。 - ミュー テックスのアクセス制御セキュリティについては、次を参照してください、、クラス、列挙体、 、とのメソッド、クラス、および、 。コンス トラクターです。 + ミューテックスのアクセス制御セキュリティについては、 および クラス、 列挙体、 クラスの メソッド、 コンストラクターに関するページを参照してください。 -## 関連項目 +## 参照 diff --git a/docs/standard/threading/overview-of-synchronization-primitives.md b/docs/standard/threading/overview-of-synchronization-primitives.md index 52600a3f416..03637bd6d84 100644 --- a/docs/standard/threading/overview-of-synchronization-primitives.md +++ b/docs/standard/threading/overview-of-synchronization-primitives.md @@ -13,15 +13,18 @@ helpviewer_keywords: - threading [.NET Framework],synchronizing threads - managed threading ms.assetid: b782bcb8-da6a-4c6a-805f-2eb46d504309 -caps.latest.revision: "17" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 58fb520365d0a80a8f8bc46e3fdbd23483fdf07f -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 79d6e384458e289c4da8587eae66486a054aad08 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 同期プリミティブの概要 .NET Framework には、スレッドの相互作用を制御したり競合状態を回避したりするためのさまざまな同期プリミティブが用意されています。 これらは、大きくは 3 つのカテゴリ (ロック、シグナリング、インタロックされた操作) に分類することができます。 @@ -47,9 +50,9 @@ ms.lasthandoff: 11/21/2017 ロックは、リソースの制御を一度に 1 つのスレッドに渡したり、指定された数のスレッドに渡したりします。 ロックが使用されているときに排他ロックを要求したスレッドは、ロックが使用可能になるまでブロックされます。 ### 排他ロック - ロックの最も単純な形式は、C# では `lock` ステートメントであり、Visual Basic では `SyncLock` ステートメントです。これらのステートメントは、コード ブロックへのアクセスを制御します。 このようなブロックはしばしば、クリティカル セクションと呼ばれます。 `lock`を使用してステートメントを実装、メソッド、およびそれを使用して`try…catch…finally`ロックが解放されることを確認するブロック。 + ロックの最も単純な形式は、C# では `lock` ステートメントであり、Visual Basic では `SyncLock` ステートメントです。これらのステートメントは、コード ブロックへのアクセスを制御します。 このようなブロックはしばしば、クリティカル セクションと呼ばれます。 `lock` ステートメントは メソッドと メソッドを使用して実装され、`try…catch…finally` ブロックを使用してロックが解放されるようにします。 - 一般を使用して、`lock`または`SyncLock`小さいコードより広げないメソッドを 1 つのブロックを保護するステートメントが使用する最善の方法、クラスです。 クラスは強力ですが、孤立したロックやデッドロックが発生しやすくなります。 + 一般的に、`lock` ステートメントまたは `SyncLock` ステートメントを使用して小さいコード ブロックを保護して、1 つのメソッドより広げないようにするのが、 クラスを使用するための最適な方法です。 クラスは強力ですが、孤立したロックやデッドロックが発生しやすくなります。 #### Monitor クラス クラスは、`lock` ステートメントと併せて使用できる追加機能を備えています。 @@ -80,7 +83,7 @@ ms.lasthandoff: 11/21/2017 概念的概要については、「[ミューテックス](../../../docs/standard/threading/mutexes.md)」を参照してください。 #### SpinLock クラス - 以降で、 [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]、使用することができます、でオーバーヘッドが必要なときにクラスパフォーマンスが低下します。 は、ロックされたクリティカル セクションを検出すると、ロックが使用可能になるまで単にループ内をスピンします。 ロックが保持される時間が非常に短い場合は、ブロックよりもスピンのほうがパフォーマンスがよいことがあります。 ただし、サイクル、万が複数のロックが保持される期間でも同じように実行としてより多くの CPU サイクルが使用され、したがって他のスレッドやプロセスのパフォーマンスが低下することができますが、します。 + [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降、 にとって必要なオーバーヘッドのためにパフォーマンスが低下する場合は、 クラスを使用できるようになりました。 は、ロックされたクリティカル セクションを検出すると、ロックが使用可能になるまで単にループ内をスピンします。 ロックが保持される時間が非常に短い場合は、ブロックよりもスピンのほうがパフォーマンスがよいことがあります。 ただし、ロックが保持される期間が数十サイクル以上の場合、 と同様のパフォーマンスを示しますが、使用する CPU サイクルが多くなるため、他のスレッドやプロセスのパフォーマンスが低下する可能性があります。 ### 他のロック ロックは排他的である必要はありません。 多くの場合、限定された数のスレッドがリソースに同時にアクセスすることを許可すると有用です。 セマフォおよびリーダー/ライター ロックは、このようなプールされたリソース アクセスを制御することを意図して設計されています。 @@ -155,7 +158,7 @@ ms.lasthandoff: 11/21/2017 ## SpinWait - 以降で、 [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)]、使用することができます、 otherwi や、待機ハンドルを使用して、必要な待機時間よりも小さくする実際の待機時間が予想される場合は、スレッドがシグナル状態になるイベントまたは条件が満たされるを待っているときに構造体se は、現在のスレッドをブロックします。 を使用することにより、待機中はスピンし、指定した時間内に条件が満たされなかった場合のみ (たとえば待機またはスリープして) 譲渡するための短い時間を指定できます。 + [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降、 構造体を使用できるようになりました。この構造体は、イベントが通知されるか条件が満たされるのをスレッドが待機する必要があるが、待機ハンドルを使用するかあるいは現在のスレッドをブロックする際に必要な待機時間よりも実際の待機時間が短いと思われる場合に使用します。 を使用することにより、待機中はスピンし、指定した時間内に条件が満たされなかった場合のみ (たとえば待機またはスリープして) 譲渡するための短い時間を指定できます。 [ページのトップへ](#top) @@ -172,7 +175,7 @@ ms.lasthandoff: 11/21/2017 概念的概要については、「[インタロックされた操作](../../../docs/standard/threading/interlocked-operations.md)」を参照してください。 -## 関連項目 +## 参照 [マルチスレッド処理のためのデータの同期](../../../docs/standard/threading/synchronizing-data-for-multithreading.md) [モニター](http://msdn.microsoft.com/library/33fe4aef-b44b-42fd-9e72-c908e39e75db) [ミューテックス](../../../docs/standard/threading/mutexes.md) diff --git a/docs/standard/threading/pausing-and-resuming-threads.md b/docs/standard/threading/pausing-and-resuming-threads.md index 33a44f533e5..acb0dcc02dd 100644 --- a/docs/standard/threading/pausing-and-resuming-threads.md +++ b/docs/standard/threading/pausing-and-resuming-threads.md @@ -16,15 +16,18 @@ helpviewer_keywords: - threading [.NET Framework], pausing - pausing threads ms.assetid: 9fce4859-a19d-4506-b082-7dd0792688ca -caps.latest.revision: "14" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: b146987d2491f044e1f5794eba17d02d8f5e478c -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4b87fbb51dbdcd5226a902e8b7ee5aeb7e126b7e +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # スレッドの一時中断と再開 スレッドの活動を同期する最も一般的な方法は、スレッドのブロックと解放を行うか、コード領域またはオブジェクトをロックすることです。 ロックとブロックのしくみの詳細については、「[同期プリミティブの概要](../../../docs/standard/threading/overview-of-synchronization-primitives.md)」を参照してください。 @@ -32,28 +35,28 @@ ms.lasthandoff: 11/21/2017 また、スレッドそのものをスリープ状態にすることもできます。 スレッドがブロックされているかまたはスリープ状態の場合は、 を使用して待機状態を解除できます。 ## Thread.Sleep メソッド - 呼び出す、メソッドが現在のスレッド (ミリ秒) か、メソッドに渡す時間間隔の数をすぐにブロックして、別のスレッドに自らのタイム スライスの残りの部分が生成されます。 時間が経過すると、スリープ状態のスレッドは実行を再開します。 + メソッドを呼び出すと、メソッドに渡した時間の間または数ミリ秒間、現在のスレッドがすぐにブロックされ、残りのタイム スライスは別のスレッドに生成されます。 時間が経過すると、スリープ状態のスレッドは実行を再開します。 - もう一方のスレッドが他方のスレッドに対して を呼び出すことはできません。 常に現在のスレッドがスリープ状態の原因となる静的メソッドです。 + もう一方のスレッドが他方のスレッドに対して を呼び出すことはできません。 は静的メソッドであり、常に現在のスレッドがスリープ状態になります。 - 呼び出すの値を持つスレッドを呼び出す別のスレッドによって中断されるまで、スリープ状態をメソッドへの呼び出しによって停止されるまでまたはスリープ状態のスレッドでそのメソッドです。 次の例は、スリープ状態のスレッドを中断する両方の方法を示しています。 + の値を指定して を呼び出すと、スリープ状態のスレッドで メソッドを呼び出す別のスレッドによって中断されるか、 メソッドの呼び出しによって中止されるまで、スリープ状態になります。 次の例は、スリープ状態のスレッドを中断する両方の方法を示しています。 [!code-csharp[Conceptual.Threading.Resuming#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.Threading.Resuming/cs/Sleep1.cs#1)] [!code-vb[Conceptual.Threading.Resuming#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.Threading.Resuming/vb/Sleep1.vb#1)] ## スレッドの中断 - 呼び出して待機中のスレッドを中断することができます、をスローする、ブロックされたスレッド上のメソッド、 、ブロッキング呼び出しからスレッドを中断します。 スレッドは、 をキャッチし、操作を継続するために適切な処理を行う必要があります。 スレッドがこの例外を無視した場合は、ランタイムがこの例外をキャッチし、そのスレッドを停止します。 + 待機中のスレッドを中断するには、ブロックされているスレッドに対して メソッドを呼び出して をスローさせます。これにより、スレッドは中断され、ブロックしている呼び出しから抜け出します。 スレッドは、 をキャッチし、操作を継続するために適切な処理を行う必要があります。 スレッドがこの例外を無視した場合は、ランタイムがこの例外をキャッチし、そのスレッドを停止します。 > [!NOTE] > が呼び出されたときに対象となるスレッドがブロックされていない場合、スレッドはブロックされるまで中断されません。 スレッドがまったくブロックされない場合は、中断されることなく完了することがあります。 - 待機がマネージ待機である場合、 はどちらもすぐにスレッドを起動します。 待機がアンマネージ待機の場合 (など、プラットフォーム呼び出しに Win32 [WaitForSingleObject](https://msdn.microsoft.com/library/windows/desktop/ms687032\(v=vs.85\).aspx)関数)、どちらも戻るか、またはマネージ コードを呼び出すまで、スレッドの制御が可能にします。 マネージ コードの動作は次のとおりです。 + 待機がマネージ待機である場合、 はどちらもすぐにスレッドを起動します。 待機がアンマネージ待機の場合 (プラットフォームが Win32 [WaitForSingleObject](https://msdn.microsoft.com/library/windows/desktop/ms687032\(v=vs.85\).aspx) 関数を呼び出した場合など)、 はどちらも、スレッドがマネージ コードに戻るか、またはマネージ コードを呼び出すまで、そのスレッドを制御できません。 マネージ コードの動作は次のとおりです。 - はスレッドをどのような待機からも起動し、これによって起動先のスレッドで がスローされます。 -- スレッドによりしている可能性がありますすべての待機をスリープ状態を解除、スレッドでスローされます。 詳細については、「[スレッドの破棄](../../../docs/standard/threading/destroying-threads.md)」を参照してください。 +- はスレッドをどのような待機からも起動し、これによってスレッドで がスローされます。 詳細については、「[スレッドの破棄](../../../docs/standard/threading/destroying-threads.md)」を参照してください。 -## 関連項目 +## 参照 diff --git a/docs/standard/threading/reader-writer-locks.md b/docs/standard/threading/reader-writer-locks.md index d098f55b539..f6d85c630de 100644 --- a/docs/standard/threading/reader-writer-locks.md +++ b/docs/standard/threading/reader-writer-locks.md @@ -12,29 +12,32 @@ helpviewer_keywords: - ReaderWriterLock class, about ReaderWriterLock class - threading [.NET Framework], ReaderWriterLock class ms.assetid: 8c71acf2-2c18-4f4d-8cdb-0728639265fd -caps.latest.revision: "11" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: df06e83165906199774f99de4140ace9b7396cbb -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: d005442ee74b46a0ecb1eaafe214e7190330cfe7 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # 読み取り/書き込みロック -クラスにより、複数のスレッドを同時に、リソースを読み取ることがリソースに書き込むために排他ロックを待機するスレッドが必要です。 + クラスを使用すると、複数のスレッドが同時に 1 つのリソースを読み取ることができますが、リソースに書き込むためには、排他的なロックを待機する必要があります。 - 使用する場合があります、をアプリケーションに共有リソースにアクセスするスレッド間の協調的同期を提供します。 ロックが取得されて、自体です。 + アプリケーションで、 を使用して、共有リソースにアクセスするスレッド間で協調的に同期させる場合があります。 ロックは 自体によって制御されます。 - 任意のスレッド同期機構を使用するスレッドをバイパスできませんによって提供されるロックを確認する必要があります、です。 これを実現する 1 つの方法は、共有リソースをカプセル化するクラスをデザインします。 このクラスは、プライベート共有リソースにアクセスする使用されていると、プライベート メンバー同期します。 例については、コード例を参照してください、クラスです。 個々 のオブジェクトを同期するために使用するのに十分なが効率的です。 + 他のスレッド同期機構と同様に、 によって提供されるロックを回避するスレッドがないようにすることが必要です。 1 つの方法として、共有リソースをカプセル化するクラスをデザインする方法があります。 このクラスは、プライベートな共有リソースにアクセスするメンバーを提供します。このメンバーは、プライベートな を使用して同期を行います。 たとえば、 クラスのコード例を参照してください。 は効率的に動作するように設計されているので、個々のオブジェクトの同期に使用できます。 - 読み取りの時間を最小限に抑えるおよび書き込み操作にアプリケーションを構成します。 長い書き込み操作、書き込みロックが排他的なので、直接のスループットに影響します。 操作のブロックの待機中のライターの長い読み取りおよび読み取りアクセス権を要求するスレッドはもブロックされますには、少なくとも 1 つのスレッドが書き込みアクセスを待機している場合。 + 読み取り操作と書き込み操作の時間を最小限にするように、アプリケーションの構造を設計してください。 書き込みロックは排他的なので、書き込み操作の時間が長いと、その分、スループットが低下します。 読み取り操作時間が長いと、ライターを待たせることになります。また、書き込みアクセスを待機しているスレッドが 1 つでもあると、読み取りアクセスを要求するスレッドもブロックされます。 > [!NOTE] -> [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)]が 2 つのリーダー ライター ロックです。 すべての新しい開発をお勧めします。 ような再帰、アップグレード、およびロックの状態をダウン グレードの規則が簡素化されますが、します。 多くの場合の潜在的なデッドロックを回避できます。 さらに、パフォーマンスのよりも大幅に向上がです。 +> [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] には、 という 2 つのリーダー/ライター ロックがあります。 すべての新規開発で、 を使用することをお勧めします。 と似ていますが、再帰の規則や、ロック状態のアップグレードおよびダウングレードの規則が簡素化されています。 は、デッドロックの可能性を大幅に回避します。 さらに、 のパフォーマンスは と比較して格段に優れています。 -## 関連項目 +## 参照 [スレッド化](../../../docs/standard/threading/index.md) diff --git a/docs/standard/threading/scheduling-threads.md b/docs/standard/threading/scheduling-threads.md index cca94d1c783..ee36c50765f 100644 --- a/docs/standard/threading/scheduling-threads.md +++ b/docs/standard/threading/scheduling-threads.md @@ -12,21 +12,24 @@ helpviewer_keywords: - threading [.NET Framework], scheduling - scheduling threads ms.assetid: 67e4a0eb-3095-4ea7-b20f-908faa476277 -caps.latest.revision: "6" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 2e1fb7d61b8e250884b2c57cad8c5106bc77787a -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 6bb715c11cc0d9b07e4ea8805ace7680ca92097c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # スレッドのスケジューリング -すべてのスレッドが、スレッド優先順位が割り当てられます。 共通言語ランタイム内で作成されたスレッドは、の優先順位を割り当てられた最初に**ThreadPriority.Normal**です。 ランタイム外部で作成されたスレッドは、マネージ環境に入る前にされていた優先順位を保持します。 取得またはとの任意のスレッドの優先順位を設定することができます、 **Thread.Priority**プロパティです。 +すべてのスレッドには、スレッド優先順位が割り当てられます。 共通言語ランタイム内で作成されたスレッドには、初期状態で **ThreadPriority.Normal** の優先順位が割り当てられます。 ランタイムの外部で作成されたスレッドは、マネージ環境に入る前に設定されていた優先順位を維持します。 任意のスレッドの優先順位を取得または設定するには、**Thread.Priority** プロパティを使用します。 - 優先度に基づいて実行するためのスレッドがスケジュールされます。 場合でも、ランタイム内のスレッドが、すべてのスレッドは、オペレーティング システムでプロセッサのタイム スライスを割り当てられます。 スレッドが実行される順序を決定するために使用するスケジューリング アルゴリズムの詳細については、各オペレーティング システムによって異なります。 いくつかのオペレーティング システムでは、最初に実行する (実行可能なスレッド) の優先順位が高いスレッドが常にスケジュールします。 優先順位が同じ複数のスレッドが使用可能なすべての場合は、スケジューラを循環その優先順位にあるスレッドの各スレッドに実行するための固定されたタイム スライスを提供します。 優先順位の高いスレッドが実行できるように、実行する優先度の低いスレッドは発生しません。 指定された優先順位で実行可能なスレッドがある場合は、スケジューラは優先順位の低い [次へ] に移動し、実行の優先度のスレッドをスケジュールします。 高い優先順位のスレッドが実行可能になった場合は、低い優先順位のスレッドがプリエンプションの対象し、優先順位の高いスレッドをもう一度実行できます。 上に、オペレーティング システムことができますもスレッドの優先順位を動的に調整、アプリケーションのユーザー インターフェイスがフォア グラウンドとバック グラウンドの間で移動されるとします。 他のオペレーティング システムは、別のスケジューリング アルゴリズムを使用することもできます。 + スレッドの実行は、優先順位に基づいてスケジュールされます。 スレッドがランタイム内で実行されている場合でも、オペレーティング システムは、すべてのスレッドにプロセッサ タイム スライスを割り当てます。 スレッドの実行順序を決定するために使用されるスケジューリング アルゴリズムの詳細は、オペレーティング システムによって異なります。 オペレーティング システムによっては、実行可能なスレッドの中で最も優先順位の高いスレッドが常に最初に実行されるようにスケジュールされます。 同じ優先順位を持つ複数のスレッドがすべて実行可能である場合、スケジューラは、その優先順位にあるスレッド間を循環することで各スレッドに一定の実行用タイム スライスを与えます。 より優先順位の高いスレッドが実行可能である限り、それよりも優先順位の低いスレッドは実行されません。 特定の優先順位を持つ実行可能なスレッドがなくなると、スケジューラは次に低い優先順位に移り、その優先順位にあるスレッドの実行をスケジュールします。 より優先順位の高いスレッドが実行可能になった場合も、それよりも優先順位の低いスレッドの代わりに優先順位の高いスレッドが実行されます。 また、オペレーティング システムは、アプリケーションのユーザー インターフェイスをフォアグラウンドとバックグラウンド間で移動させながら、スレッドの優先順位を動的に調整することもできます。 オペレーティング システムによっては、別のスケジューリング アルゴリズムが使用される場合があります。 -## 関連項目 +## 参照 [スレッドの使用とスレッド処理](../../../docs/standard/threading/using-threads-and-threading.md) [Windows でのマネージ スレッド処理とアンマネージ スレッド処理](../../../docs/standard/threading/managed-and-unmanaged-threading-in-windows.md) diff --git a/docs/standard/threading/semaphore-and-semaphoreslim.md b/docs/standard/threading/semaphore-and-semaphoreslim.md index 9c558a6ad9f..d41ee7b46c8 100644 --- a/docs/standard/threading/semaphore-and-semaphoreslim.md +++ b/docs/standard/threading/semaphore-and-semaphoreslim.md @@ -16,15 +16,18 @@ helpviewer_keywords: - SemaphoreSlim class, about SemaphoreSlim class - threading [.NET Framework], Semaphore class ms.assetid: 7722a333-b974-47a2-a7c0-f09097fb644e -caps.latest.revision: "17" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 039dee4df1a6d06fa1833eae077817ff5eca3ea3 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 3c7d196b54a831c807b7181c1c810c3e78a463a2 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # Semaphore と SemaphoreSlim クラスは、名前付きセマフォ (システム全体) またはローカル セマフォを表します。 これは、Win32 セマフォ オブジェクトの Thin ラッパーです。 Win32 セマフォは、リソースのプールへのアクセスの制御に使用できるカウント セマフォです。 @@ -39,7 +42,7 @@ ms.lasthandoff: 11/21/2017 ### セマフォとスレッド ID この 2 つの種類のセマフォは、、および の各メソッドの呼び出しでスレッド ID を適用しません。 たとえば、セマフォの一般的な使用シナリオでは、producer スレッドと consumer スレッドが使用され、一方のスレッドが常にセマフォ カウントをインクリメントし、もう一方のスレッドが常にセマフォ カウントをデクリメントします。 - プログラマは、スレッドによるセマフォの解放回数が多くなりすぎないようにする必要があります。 たとえば、セマフォの最大カウントが 2 で、スレッド A とスレッド B が両方ともセマフォに入るとします。 スレッド B がプログラミング エラーのために `Release` を 2 回呼び出した場合、この呼び出しは両方とも成功します。 セマフォのカウントがいっぱいになり、A のときにスレッドを最終的に呼び出す`Release`、がスローされます。 + プログラマは、スレッドによるセマフォの解放回数が多くなりすぎないようにする必要があります。 たとえば、セマフォの最大カウントが 2 で、スレッド A とスレッド B が両方ともセマフォに入るとします。 スレッド B がプログラミング エラーのために `Release` を 2 回呼び出した場合、この呼び出しは両方とも成功します。 セマフォのカウントがいっぱいになっているときに、スレッド A も `Release` を呼び出すと、 がスローされます。 ## 名前付きセマフォ Windows オペレーティング システムでは、セマフォに名前を付けることができます。 名前付きセマフォはシステム全体でのセマフォです。 つまり、名前付きセマフォは、作成されると、すべてのプロセスのすべてのスレッドで認識されるようになります。 そのため、名前付きセマフォは、プロセスおよびスレッドのアクティビティを同期するために使用できます。 @@ -53,7 +56,7 @@ ms.lasthandoff: 11/21/2017 アクセス制御セキュリティを使用して、名前付きセマフォを表す オブジェクトを保護します。可能であれば オブジェクトを指定するコンストラクターを使用して保護します。 メソッドを使用してアクセス制御セキュリティを適用することもできますが、この場合、セマフォが作成されてから保護されるまでの間に無防備な時間帯が生じてしまいます。 アクセス制御セキュリティによりセマフォを保護すると、悪意のある攻撃を防ぐことができますが、意図しない名前の競合の問題の解決にはなりません。 -## 関連項目 +## 参照 [スレッド処理オブジェクトと機能](../../../docs/standard/threading/threading-objects-and-features.md) diff --git a/docs/standard/threading/spinlock.md b/docs/standard/threading/spinlock.md index f5b1b7b8652..8922d7d4458 100644 --- a/docs/standard/threading/spinlock.md +++ b/docs/standard/threading/spinlock.md @@ -8,28 +8,32 @@ ms.suite: ms.technology: dotnet-standard ms.tgt_pltfrm: ms.topic: article -helpviewer_keywords: synchronization primitives, SpinLock +helpviewer_keywords: +- synchronization primitives, SpinLock ms.assetid: f9af93bb-7a0d-4ba5-afe8-74f48b6b6958 -caps.latest.revision: "8" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: efe9b3126b3c952ab156f9ca40752ad8d3fddcd1 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: e83505a36252457d286bc7fbc6bbe442732229a4 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # SpinLock -構造体は、低レベルで相互排他的な同期プリミティブにロックの取得を待機している間に回転します。 待機時間が短いファイル名と競合が最小限に抑える場合に予想される場合、マルチコア コンピューターでは他の種類のロックよりも優れてことができます。 ただし、ことをお勧めを使用することをプロファイリングして、特定する場合にのみ、メソッドまたはメソッドは、プログラムのパフォーマンスのパフォーマンスの大幅に低下します。 + 構造体は低レベルで相互排他的な同期プリミティブであり、ロックの取得を待機する間にスピンします。 マルチコア コンピューターでは、待機時間が短いことが予測され、競合を最小限に抑えられる場合、パフォーマンスは他の種類のロックよりも の方が優れています。 ただし、プロファイルにより、 メソッドまたは メソッドがプログラムのパフォーマンスを大幅に低下させていることがわかった場合にのみ、 を使用することをお勧めします。 - 場合でも、それを取得していない、ロック、スレッドのタイム スライスを生成する可能性があります。 これは、スレッドの優先順位の反転を回避し、進捗ガベージ コレクターを有効にします。 使用すると、 、あるスレッド ロックを保持できるありません非常に短時間の期間より長くなることスレッドがブロックされていないロックを保持していることを確認します。 + では、ロックをまだ取得していない場合でも、スレッドのタイム スライスが生成される可能性があります。 スレッドの優先順位の逆転を避ける場合と、ガベージ コレクターを進める場合にこのようになります。 を使用する場合は、スレッドが一定時間ロックを保持できないことと、スレッドがロックを保持している間はブロックできないことを確認してください。 - スピンロックが値型であるため、明示的に渡す必要があります、参照渡しする場合は、同じロックを参照する 2 つのコピー。 + SpinLock は値の型であるため、2 つのコピーで同じロックを参照する場合は、参照渡しで明示的に渡す必要があります。 - この型を使用する方法の詳細については、次を参照してください。です。 例については、次を参照してください。[する方法: 低水準の同期のために使用するスピンロック](../../../docs/standard/threading/how-to-use-spinlock-for-low-level-synchronization.md)です。 + この型の使用方法の詳細については、「」を参照してください。 例については、「[方法: 下位レベルの同期に SpinLock を使用する](../../../docs/standard/threading/how-to-use-spinlock-for-low-level-synchronization.md)」を参照してください。 - サポートしている、*スレッド*-*追跡*特定の時刻に、ロックが保持しているスレッドを追跡しやすく開発フェーズ中に使用できるモードです。 スレッド追跡モードはデバッグは、非常に便利ですが、オフにすることが、プログラムのリリース バージョンでパフォーマンスが低下する可能性がありますのでことをお勧めします。 詳細については、次を参照してください。[する方法: SpinLock のスレッドを有効にする追跡モード](../../../docs/standard/threading/how-to-enable-thread-tracking-mode-in-spinlock.md)です。 + では*スレッド*-*追跡* モードがサポートされ、開発フェーズ中に使用することができ、特定の時間にロックを保持しているスレッドの追跡に役立ちます。 スレッド追跡モードはデバッグに非常に役立ちますが、パフォーマンスが低下する可能性があるため、リリース バージョンのプログラムでは無効にすることをお勧めします。 詳細については、「[方法: SpinLock のスレッド追跡モードを有効にする](../../../docs/standard/threading/how-to-enable-thread-tracking-mode-in-spinlock.md)」を参照してください。 -## 関連項目 +## 参照 [スレッド処理オブジェクトと機能](../../../docs/standard/threading/threading-objects-and-features.md) diff --git a/docs/standard/threading/spinwait.md b/docs/standard/threading/spinwait.md index 885423b8b0b..6c3f40b3764 100644 --- a/docs/standard/threading/spinwait.md +++ b/docs/standard/threading/spinwait.md @@ -11,30 +11,34 @@ ms.topic: article dev_langs: - csharp - vb -helpviewer_keywords: synchronization primitives, SpinWait +helpviewer_keywords: +- synchronization primitives, SpinWait ms.assetid: 36012f42-34e5-4f86-adf4-973f433ed6c6 -caps.latest.revision: "9" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: cfaf85c0fe1de3be89618ae540e9c183b66a11eb -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 1e67dd59464de09a35941d91ef984db6b7779b8c +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # SpinWait -高価なコンテキストの切り替えとカーネル イベントに必要なカーネル遷移を避けるために低レベルのシナリオで使用できる軽量な同期型です。 マルチコア コンピューターは、長期間保持するリソースが予期されていない場合があります数十または数百サイクル、ユーザー モードで起動し、リソースの取得を再試行を待機中のスレッドの効率。 回転の後に、リソースが利用可能な場合は、数千サイクルを保存しました。 リソースがまだ使用できない場合は、いくつかのサイクルのみを費やしし、カーネル ベースの待機を入力できます。 この待機時間、回転の組み合わせとも呼ば、 *2 フェーズ待機操作*です。 + は軽量な同期型であり、負荷が高いコンテキスト スイッチとカーネル イベントに必要なカーネル遷移を避けるために低レベルのシナリオで使用できます。 マルチコア コンピューターでは、リソースの保持期間が長くならないと予測される場合、待機中のスレッドを数十または数百サイクルの間ユーザー モードでスピンさせてから、リソースの取得を再試行した方が効率的です。 スピン後にリソースを使用できる場合は、数千サイクルを節約したことになります。 リソースをまだ使用できない場合でも、数サイクルを消費しただけであり、カーネル ベースの待機に移行できます。 スピン後に待機というこの組み合わせは、*2 フェーズ待機操作* と呼ばれることがあります。 - などのカーネル イベントをラップする .NET Framework の型と組み合わせて使用するように設計されたです。 1 つだけのプログラムの基本的な回転機能を単独でも使用できます。 + は、 などのカーネル イベントをラップする .NET Framework 型と共に使用するように設計されています。 また、 は、1 つのプログラムのみで基本的なスピン機能のために単独で使用することもできます。 - 空のループだけがします。 動作を提供する適切なスピン一般的なケースでは、慎重に実装されているし、コンテキスト スイッチが開始場合は、回転する十分な時間 (ほぼカーネル遷移に必要な時間の長さ)。 たとえば、コンピューターでは単一コア、スレッドのタイム スライスの生成スピン ブロックのすべてのスレッドでの進行状況を転送するためにすぐにします。 またを待機中のスレッドが優先順位の高いスレッドや、ガベージ コレクターをブロックするを防ぐために、マルチコア コンピューター上であっても生成します。 そのためを使用している場合、 2 フェーズ待機操作では、ことをお勧めする前に、カーネル待機が起動される、コンテキスト スイッチをそれ自体を開始します。 提供、プロパティで、すべての呼び出しにする前に確認できるです。 プロパティが返されるときに`true`、独自の待機操作を開始します。 例については、次を参照してください。[する方法: 2 フェーズ待機操作を実装する使用 SpinWait](../../../docs/standard/threading/how-to-use-spinwait-to-implement-a-two-phase-wait-operation.md)です。 + は単なる空のループではありません。 一般的に、適切なスピン動作を提供するためには慎重に実装する必要があり、長時間 (おおよそ、カーネル遷移に要する時間) スピンすると、コンテキスト スイッチが開始されます。 たとえば、シングルコア コンピューターでは、スピンはすべてのスレッドの進行をブロックするため、 によって、スレッドのタイム スライスがすぐに生成されます。 マルチコア コンピューターでも、待機中のスレッドがより優先順位の高いスレッドやガベージ コレクターをブロックしないように、 によってタイム スライスが生成されます。 したがって、 を 2 フェーズ待機操作で使用する場合は、 自体がコンテキスト スイッチを開始する前にカーネル待機を呼び出すことをお勧めします。 では プロパティが提供され、 のすべての呼び出しの前に確認できます。 プロパティが `true` を返したときに、独自の待機操作を開始します。 例については、「[方法: SpinWait を使用して 2 フェーズ待機操作を実装する](../../../docs/standard/threading/how-to-use-spinwait-to-implement-a-two-phase-wait-operation.md)」を参照してください。 - 有効にできますが、2 フェーズ待機操作を実行していないいくつかの条件が true になるまでだけ回転している場合は、をそのコンテキストを実行する Windows オペレーティング システムの環境での良き市民ようにを切り替えます。 基本的な例を次に、ロック制御不要のスタックにします。 高パフォーマンス、スレッド セーフであるスタックを必要とする場合は、使用を検討してです。 + 2 フェーズ待機操作は実行せずに、特定の条件が満たされるまでスピンを行うだけの場合は、Windows オペレーティング システム環境で問題を発生させることなく、 を有効にしてコンテキスト スイッチを実行できます。 ロックされないスタックの を次の基本的な例に示します。 高パフォーマンスのスレッド セーフ スタックが必要な場合は、 の使用を検討してください。 [!code-csharp[CDS_SpinWait#05](../../../samples/snippets/csharp/VS_Snippets_Misc/cds_spinwait/cs/spinwait.cs#05)] [!code-vb[CDS_SpinWait#05](../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_spinwait/vb/cds_spinwait1.vb#05)] -## 関連項目 +## 参照 [スレッド処理オブジェクトと機能](../../../docs/standard/threading/threading-objects-and-features.md) diff --git a/docs/standard/threading/synchronizing-data-for-multithreading.md b/docs/standard/threading/synchronizing-data-for-multithreading.md index 1bfd0af25c7..c116018571f 100644 --- a/docs/standard/threading/synchronizing-data-for-multithreading.md +++ b/docs/standard/threading/synchronizing-data-for-multithreading.md @@ -13,36 +13,39 @@ helpviewer_keywords: - threading [.NET Framework], synchronizing threads - managed threading ms.assetid: b980eb4c-71d5-4860-864a-6dfe3692430a -caps.latest.revision: "16" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: a17eba2f930fda06d643d78c73c117e89ae86928 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 4e1e123b8c8440b766e5b8903170c8cb392f154a +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # マルチスレッド処理のためのデータの同期 複数のスレッドが同じオブジェクトのプロパティとメソッドを呼び出す場合は、これらの呼び出しを同期することが重要です。 同期しないと、1 つのスレッドが行っていることを別のスレッドが中断し、オブジェクトが無効な状態になってしまう可能性があります。 メンバーがこのように中断されないように保護されているクラスを、スレッドセーフと呼びます。 共通言語基盤には、インスタンスや静的メンバーへのアクセスを同期するためのいくつかの方法が備わっています。 -- 同期されたコード領域。 使用することができます、コード ブロックをだけを同期するためにこのクラスのクラス、またはコンパイラのサポートが必要とパフォーマンスが向上します。 +- 同期されたコード領域。 クラス、またはこのクラスに対するコンパイラ サポートを使用して、パフォーマンスを向上させながら、同期を必要とするコード ブロックだけを同期できます。 -- 手動での同期。 .NET Framework クラス ライブラリによって提供されている同期オブジェクトを使用できます。 参照してください[同期プリミティブの概要](../../../docs/standard/threading/overview-of-synchronization-primitives.md)の説明を含む、クラスです。 +- 手動での同期。 .NET Framework クラス ライブラリによって提供されている同期オブジェクトを使用できます。 「[同期プリミティブの概要](../../../docs/standard/threading/overview-of-synchronization-primitives.md)」を参照してください。これには、 クラスの説明が含まれています。 -- 同期されたコンテキスト。 使用することができます、の単純な自動同期を有効にするオブジェクト。 +- 同期されたコンテキスト。 を使用することで、 オブジェクトの単純な自動同期を有効にすることができます。 -- 内のコレクション クラス、名前空間。 これらのクラスには、同期された追加操作および削除操作が組み込まれています。 詳しくは、「[スレッド セーフなコレクション](../../../docs/standard/collections/thread-safe/index.md)」を参照してください。 +- 名前空間のコレクション クラス。 これらのクラスには、同期された追加操作および削除操作が組み込まれています。 詳しくは、「[スレッド セーフなコレクション](../../../docs/standard/collections/thread-safe/index.md)」を参照してください。 共通言語ランタイムにはスレッド モデルが用意されていて、要件に応じたさまざまな方法で同期することができる多数のカテゴリにクラスを分類できます。 次の表に、各同期カテゴリで提供されるフィールドおよびメソッドに対する同期サポートを示します。 |カテゴリ|グローバル フィールド|静的フィールド|静的メソッド|インスタンス フィールド|インスタンス メソッド|特定のコード ブロック| |--------------|-------------------|-------------------|--------------------|---------------------|----------------------|--------------------------| -|同期なし|いいえ|いいえ|いいえ|いいえ|いいえ|いいえ| -|同期されたコンテキスト|いいえ|いいえ|いいえ|はい|はい|いいえ| -|同期されたコード領域|いいえ|いいえ|マークされている場合にのみ|いいえ|マークされている場合にのみ|マークされている場合にのみ| +|同期なし|×|×|×|×|×|×| +|同期されたコンテキスト|×|×|×|[はい]|[はい]|×| +|同期されたコード領域|×|×|マークされている場合にのみ|×|マークされている場合にのみ|マークされている場合にのみ| |手動での同期|手動|手動|手動|手動|手動|手動| ## 同期なし @@ -52,29 +55,29 @@ ms.lasthandoff: 11/21/2017 .NET Framework クラス ライブラリには、スレッドを同期するための多数のクラスがあります。 「[同期プリミティブの概要](../../../docs/standard/threading/overview-of-synchronization-primitives.md)」を参照してください。 ## 同期されたコード領域 - 使用することができます、クラス、またはコードのブロック、インスタンス メソッド、および静的メソッドを同期するためにコンパイラ キーワード。 同期された静的フィールドに対するサポートはありません。 + クラスまたはコンパイラ キーワードを使用して、コード ブロック、インスタンス メソッド、静的メソッドを同期できます。 同期された静的フィールドに対するサポートはありません。 Visual Basic と C# の両方が、コード ブロックに特定の言語キーワード (C# の `lock` ステートメント、Visual Basic の `SyncLock` ステートメント) のマークを付けることをサポートしています。 スレッドによってコードが実行されると、ロックの取得が試行されます。 別のスレッドによってロックが既に取得されている場合、ロックが使用可能になるまでスレッドはブロックされます。 同期されているコード ブロック部分の実行をスレッドが終了すると、終了方法に関係なく、ロックが解放されます。 > [!NOTE] -> `lock`と`SyncLock`ステートメントを使用して実装、他のメソッドのと連携して、同期された地域内で使用できます。 +> `lock` ステートメントおよび `SyncLock` ステートメントは、 および を使用して実装されるため、 の他のメソッドを、同期された領域内でこれらと組み合わせて使用できます。 また、**MethodImplAttribute** および **MethodImplOptions.Synchronized** を使用してメソッドを修飾することもできます。これにより、**Monitor** またはメソッド全体をロックするためのコンパイラ キーワードの 1 つを使用した場合と同じ結果になります。 - スレッド同期コード領域へのアクセスを待機しているなどのブロッキング操作を中断するために使用します。 **Thread.Interrupt**はのような操作からのスレッドの中断にも使用です。 + を使用すると、同期されたコード領域へのアクセスの待機などのブロック操作から、スレッドを切り離すことができます。 また、この **Thread.Interrupt** を使用することで、 などの操作からスレッドを切り離すこともできます。 > [!IMPORTANT] > `static` メソッド (Visual Basic では`Shared`) を保護するために、型 (C# の場合は`typeof(MyType)`、Visual Basic の場合は`GetType(MyType)`、C++ の場合は`MyType::typeid`) をロックしないでください。 代わりにプライベート静的オブジェクトを使用します。 同様に、C# の `this` (Visual Basic の場合は `Me`) を使用してインスタンス メソッドをロックしないでください。 代わりにプライベート オブジェクトを使用します。 クラスやインスタンスは、独自のコード以外のコードでもロックできますが、デッドロックやパフォーマンスの問題が発生する可能性があります。 ### コンパイラ サポート - Visual Basic と c# の両方を使用する言語のキーワードをサポートしてオブジェクトをロックします。 Visual Basic は [SyncLock](~/docs/visual-basic/language-reference/statements/synclock-statement.md) ステートメントをサポートしており、C# は [lock](~/docs/csharp/language-reference/keywords/lock-statement.md) ステートメントをサポートしています。 + Visual Basic と C# は、どちらも を使用してオブジェクトをロックする言語キーワードをサポートします。 Visual Basic は [SyncLock](~/docs/visual-basic/language-reference/statements/synclock-statement.md) ステートメントをサポートしており、C# は [lock](~/docs/csharp/language-reference/keywords/lock-statement.md) ステートメントをサポートしています。 両方とも、コード ブロックで例外がスローされると、**lock** または **SyncLock** によって取得されたロックは自動的に解放されます。 C# コンパイラおよび Visual Basic コンパイラは **try**/**finally** ブロックを生成します。tryブロックは先頭に **Monitor.Enter** を含み、**finally** ブロックは **Monitor.Exit** を含みます。 **lock** ブロックまたは **SyncLock** ブロック内部で例外がスローされると、**finally** ハンドラーが実行され、任意のクリーンアップ作業を行えるようになります。 ## 同期されたコンテキスト 任意の **ContextBoundObject** で **SynchronizationAttribute** を使用して、すべてのインスタンス メソッドとインスタンス フィールドを同期することができます。 同じコンテキスト ドメイン内のすべてのオブジェクトが同じロックを共有します。 複数のスレッドがメソッドやフィールドにアクセスできますが、これらのオブジェクトに一度にアクセスできるのは 1 つのスレッドだけです。 -## 関連項目 +## 参照 [スレッドおよびスレッド処理](../../../docs/standard/threading/threads-and-threading.md) [同期プリミティブの概要](../../../docs/standard/threading/overview-of-synchronization-primitives.md) diff --git a/docs/standard/threading/the-managed-thread-pool.md b/docs/standard/threading/the-managed-thread-pool.md index d705fd599e4..3be9a0bdfc2 100644 --- a/docs/standard/threading/the-managed-thread-pool.md +++ b/docs/standard/threading/the-managed-thread-pool.md @@ -18,15 +18,18 @@ helpviewer_keywords: - threading [.NET Framework], thread pool - threading [.NET Framework], pooling ms.assetid: 2be05b06-a42e-4c9d-a739-96c21d673927 -caps.latest.revision: "24" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 38032fccce1a8f6f7cbcb3bbd3d3f9d008a74141 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: e50fd66096d6bd58fb7db692449e7f8654b5ca76 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # マネージ スレッド プール クラスを使用すると、システムによって管理されるワーカー スレッドのプールがアプリケーションに提供されます。これを利用すると、開発者は、スレッド管理ではなくアプリケーション タスクに注意を集中できるようになります。 バックグラウンド処理が必要な短いタスクがある場合、マネージ スレッド プールを使用すると、複数のスレッドを簡単に利用できます。 たとえば、[!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、スレッド プールのスレッドで非同期タスクを実行する オブジェクトと オブジェクトを作成できます。 @@ -52,7 +55,7 @@ ms.lasthandoff: 11/21/2017 - 安定した ID をスレッドに関連付ける必要がある場合、またはスレッドを特定のタスク専用にする必要がある場合。 ## スレッド プールの特徴 - スレッド プールのスレッドはバックグラウンド スレッドです。 参照してください[フォア グラウンドとバック グラウンド スレッド](../../../docs/standard/threading/foreground-and-background-threads.md)です。 各スレッドは、既定のスタック サイズを使用し、既定の優先順位で実行されます。また、各スレッドはマルチスレッド アパートメント内にあります。 + スレッド プールのスレッドはバックグラウンド スレッドです。 「[フォアグラウンド スレッドとバックグラウンド スレッド](../../../docs/standard/threading/foreground-and-background-threads.md)」を参照してください。 各スレッドは、既定のスタック サイズを使用し、既定の優先順位で実行されます。また、各スレッドはマルチスレッド アパートメント内にあります。 プロセスごとにスレッド プールが 1 つだけあります。 @@ -65,7 +68,7 @@ ms.lasthandoff: 11/21/2017 - 共通言語ランタイムまたはホスト プロセスがスレッドを終了する。 - 詳細については、次を参照してください。[マネージ スレッドの例外](../../../docs/standard/threading/exceptions-in-managed-threads.md)です。 + 詳しくは、「[マネージ スレッドの例外](../../../docs/standard/threading/exceptions-in-managed-threads.md)」をご覧ください。 > [!NOTE] > .NET Framework Version 1.0 および 1.1 では、スレッド プールのスレッドの未処理の例外は、共通言語ランタイムによって通知なしにトラップされます。 このため、アプリケーション状態が破損し、最終的にアプリケーションが停止することになり、デバッグが困難になることがあります。 @@ -90,25 +93,25 @@ ms.lasthandoff: 11/21/2017 > アイドル スレッドの最小数は、 メソッドを使用して増やすことができます。 ただし、これらの値を必要以上に大きくすると、パフォーマンスの問題が発生する可能性があります。 同時に開始するタスクの数が多すぎる場合は、すべてのタスクで処理速度が低下する可能性があります。 ほとんどの場合、スレッドを割り当てるためのスレッド プール独自のアルゴリズムを使用することでスレッド プールのパフォーマンスが向上します。 ## セキュリティ チェックのスキップ - スレッド プールでは、 メソッドと メソッドも使用できます。 これらのメソッドは、呼び出し元のスタックが、キューに配置されているタスクの実行時に行われるセキュリティ チェックと無関係であることが確認できる場合にのみ使用します。 および両方、スレッドがタスクの実行を開始するときに、スレッド プールのスレッドのスタックにマージは、呼び出し元のスタックをキャプチャします。 セキュリティ チェックが必要な場合は、そのスタック全体をチェックする必要があります。 チェックは安全性を提供しますが、パフォーマンスへの影響もあります。 + スレッド プールでは、 メソッドと メソッドも使用できます。 これらのメソッドは、呼び出し元のスタックが、キューに配置されているタスクの実行時に行われるセキュリティ チェックと無関係であることが確認できる場合にのみ使用します。 はどちらも呼び出し元のスタックを取り込みます。このスタックは、スレッドがタスクの実行を開始するときにスレッド プールのスレッドのスタックにマージされます。 セキュリティ チェックが必要な場合は、そのスタック全体をチェックする必要があります。 チェックは安全性を提供しますが、パフォーマンスへの影響もあります。 ## スレッド プールの使用 - 以降で、 [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)]、スレッド プールを使用する最も簡単な方法が使用するには、[タスク並列ライブラリ (TPL)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md)です。 などの並列ライブラリの型では、既定でスレッド プールのスレッドを使用してタスクが実行されます。 また、マネージ コードから (またはアンマネージ コードから `CorQueueUserWorkItem`) を呼び出し、タスクを実行するメソッドを表す デリゲートを渡すことによってスレッド プールを使用することもできます。 スレッド プールを使用するもう 1 つの方法として、待機操作の関連ワーク アイテムをキューに置く方法もあります。これには、 メソッドを使用し、 を渡します。その WaitHandle がシグナル状態になるかタイムアウトになると、 デリゲートによって表されるメソッドが呼び出されます。 スレッド プールのスレッドを使用してコールバック メソッドが呼び出されます。 + [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降でスレッド プールを使用する場合は、[タスク並列ライブラリ (TPL)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md) を使用すると最も簡単です。 などの並列ライブラリの型では、既定でスレッド プールのスレッドを使用してタスクが実行されます。 また、マネージ コードから (またはアンマネージ コードから `CorQueueUserWorkItem`) を呼び出し、タスクを実行するメソッドを表す デリゲートを渡すことによってスレッド プールを使用することもできます。 スレッド プールを使用するもう 1 つの方法として、待機操作の関連ワーク アイテムをキューに置く方法もあります。これには、 メソッドを使用し、 を渡します。その WaitHandle がシグナル状態になるかタイムアウトになると、 デリゲートによって表されるメソッドが呼び出されます。 スレッド プールのスレッドを使用してコールバック メソッドが呼び出されます。 ## ThreadPool の例 このセクションのコード例では、 クラス、 メソッド、および メソッドを使用したスレッド プールの例を示します。 -- [タスク並列ライブラリを使用して非同期タスクを実行します。](#TaskParallelLibrary) +- [タスク並列ライブラリを使用した非同期タスクの実行](#TaskParallelLibrary) -- [QueueUserWorkItem で非同期的にコードを実行します。](#ExecuteCodeWithQUWI) +- [QueueUserWorkItem を使用した非同期のコード実行](#ExecuteCodeWithQUWI) -- [QueueUserWorkItem のタスクのデータを指定します。](#TaskDataForQUWI) +- [QueueUserWorkItem へのタスク データの供給](#TaskDataForQUWI) - [RegisterWaitForSingleObject の使用](#RegisterWaitForSingleObject) ### タスク並列ライブラリを使用した非同期タスクの実行 - 次の例では、 メソッドを呼び出すことにより、 オブジェクトを作成して使用する方法を示します。 使用する例については、クラス、非同期タスクから値を返すを参照してください[する方法: タスクから値を返す](../../../docs/standard/parallel-programming/how-to-return-a-value-from-a-task.md)です。 + 次の例では、 メソッドを呼び出すことにより、 オブジェクトを作成して使用する方法を示します。 クラスを使用して非同期タスクから値を返す方法の例については、「[方法: タスクから値を返す](../../../docs/standard/parallel-programming/how-to-return-a-value-from-a-task.md)」を参照してください。 [!code-csharp[System.Threading.Tasks.Task#01](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.threading.tasks.task/cs/startnew.cs#01)] [!code-vb[System.Threading.Tasks.Task#01](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.threading.tasks.task/vb/startnew.vb#01)] @@ -135,7 +138,7 @@ ms.lasthandoff: 11/21/2017 - スレッドで実行するタスクを、 メソッドを使用してキューに配置します。 -- を使用して、実行するようにタスクに通知します。 参照してください[EventWaitHandle、AutoResetEvent、CountdownEvent、ManualResetEvent](../../../docs/standard/threading/eventwaithandle-autoresetevent-countdownevent-manualresetevent.md)です。 +- を使用して、実行するようにタスクに通知します。 「[EventWaitHandle、AutoResetEvent、CountdownEvent、ManualResetEvent](../../../docs/standard/threading/eventwaithandle-autoresetevent-countdownevent-manualresetevent.md)」を参照してください。 - デリゲートを使用して、タイムアウトと通知の両方を処理します。 @@ -145,7 +148,7 @@ ms.lasthandoff: 11/21/2017 [!code-csharp[Conceptual.ThreadPool#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.threadpool/cs/source3.cs#3)] [!code-vb[Conceptual.ThreadPool#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.threadpool/vb/source3.vb#3)] -## 関連項目 +## 参照 diff --git a/docs/standard/threading/thread-local-storage-thread-relative-static-fields-and-data-slots.md b/docs/standard/threading/thread-local-storage-thread-relative-static-fields-and-data-slots.md index be25199a58c..9f612e753b5 100644 --- a/docs/standard/threading/thread-local-storage-thread-relative-static-fields-and-data-slots.md +++ b/docs/standard/threading/thread-local-storage-thread-relative-static-fields-and-data-slots.md @@ -14,57 +14,60 @@ helpviewer_keywords: - local thread storage - TLS ms.assetid: c633a4dc-a790-4ed1-96b5-f72bd968b284 -caps.latest.revision: "13" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 39dd80d378171563f2aadadaa146278e8a417d32 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 127f7ea9bb6a6bf91547d049f582439882d2fb6e +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # スレッド ローカル ストレージ : スレッド相対静的フィールドとデータ スロット -マネージ スレッド ローカル ストレージ (TLS) データを格納するスレッドおよびアプリケーション ドメインに一意であるを使用することができます。 .NET Framework には 2 つの方法を使用するマネージ TLS: スレッド相対静的フィールドとデータ スロット。 +1 つのスレッドとアプリケーション ドメインに固有のデータを格納するには、マネージ スレッド ローカル ストレージ (TLS: Thread Local Storage) を使用します。 .NET Framework は、マネージ TLS の使用に関して、スレッド相対静的フィールドとデータ スロットという 2 つの機構を備えています。 -- スレッド相対静的フィールドを使用して (スレッド相対`Shared`Visual Basic でのフィールド) コンパイル時にニーズに正確に予測できる場合です。 スレッド相対静的フィールドは、最高のパフォーマンスを提供します。 コンパイル時の型チェックの利点も提供します。 +- コンパイル時に要件を正確に予測できる場合は、スレッド相対静的フィールド (Visual Basic ではスレッド相対 `Shared` フィールド) を使用します。 スレッド相対静的フィールドは、最適なパフォーマンスを提供します。 また、コンパイル時に型チェックを利用することもできます。 -- 実際の要件は実行時にしか検出される可能性がありますとデータ スロットを使用します。 データ スロットは、速度は遅くなりにくいという、スレッド相対静的フィールドよりも使用して、データ型として格納されますので、使用する前に、正しい型にキャストする必要があります。 +- 実行時にならないと実際の要件がわからない場合は、データ スロットを使用します。 データ スロットは、スレッド相対静的フィールドと比べると低速で使いにくく、データは 型として格納されるため、使用前に適切な型にキャストする必要があります。 - 使用するアンマネージ C++ で`TlsAlloc`スロットを動的に割り当てると`__declspec(thread)`スレッド相対ストレージで変数を割り当てる必要があることを宣言します。 スレッド相対静的フィールドとデータ スロットは、この動作の管理対象のバージョンを提供します。 + アンマネージ C++ では、`TlsAlloc` を使用してスロットを動的に割り当て、`__declspec(thread)` を使用して、変数をスレッド相対ストレージに割り当てることを宣言します。 スレッド相対静的フィールドおよびデータ スロットには、この動作のマネージ バージョンが用意されています。 - [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]、使用することができます、オブジェクトが最初に使用された場合に遅れて初期化されるスレッド ローカル オブジェクトを作成するクラス。 詳細については、「[限定的な初期化](../../../docs/framework/performance/lazy-initialization.md)」を参照してください。 + [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] では、 クラスを使用して、最初に利用されるときに遅れて初期化されるスレッドローカル オブジェクトを作成できます。 詳細については、「[限定的な初期化](../../../docs/framework/performance/lazy-initialization.md)」を参照してください。 -## 管理されている TLS でのデータの一意性 - スレッド相対静的フィールドまたはデータ スロットを使用するかどうかは、管理されている TLS でのデータをスレッドおよびアプリケーション ドメインの組み合わせに一意です。 +## マネージ TLS でのデータの一意性 + スレッド相対静的フィールドとデータ スロットのどちらを使用しても、マネージ TLS でのデータはスレッドとアプリケーション ドメインの組み合わせに対して一意になります。 -- アプリケーション ドメイン内で 1 つのスレッドは両方のスレッドが同じフィールドまたはスロットを使用する場合でも、別のスレッドからのデータを変更できません。 +- アプリケーション ドメインでは、両方のスレッドが同じフィールドまたはスロットを使用していたとしても、一方のスレッドが、もう一方のスレッドからのデータを変更することはできません。 -- スレッドには、複数のアプリケーション ドメインからの同じフィールドまたはスロットがアクセスする、アプリケーション ドメインごとに別個の値が保持されます。 +- あるスレッドが、複数のアプリケーション ドメインから 1 つのフィールドまたはスロットにアクセスする場合、アプリケーション ドメインごとに個別の値が維持されます。 - たとえば、スレッドの設定、スレッド相対静的フィールドの値が別のアプリケーション ドメインに入るし、フィールドの値を取得し、2 つ目のアプリケーション ドメインで取得した値は、最初のアプリケーション ドメインの値によって異なります。 2 つ目のアプリケーション ドメインで、フィールドの新しい値を設定しても、最初のアプリケーション ドメインにあるフィールドの値には影響しません。 + たとえば、スレッドがスレッド相対静的フィールドの値を設定し、別のアプリケーション ドメインに移動して、設定したフィールドの値を取得した場合、2 番目のアプリケーション ドメインで取得した値は、最初のアプリケーション ドメインでの値とは異なります。 2 番目のアプリケーション ドメインのフィールドに新しい値を設定しても、最初のアプリケーション ドメインにあるフィールドの値には影響しません。 - 同様に、スレッドは、次の 2 つの異なるアプリケーション ドメインで同じ名前付きデータ スロットを取得、ときに最初のアプリケーション ドメイン内のデータは、2 つ目のアプリケーション ドメイン内のデータの独立したままです。 + 同様に、スレッドが、異なる 2 つのアプリケーション ドメインで同じ名前付きデータ スロットを取得した場合、最初のアプリケーション ドメインのデータと 2 番目のアプリケーション ドメインのデータは、それぞれ独立したものとなります。 ## スレッド相対静的フィールド - データの一部が一意でスレッドおよびアプリケーション ドメインの組み合わせを常にある場合は、適用、静的フィールドに属性します。 その他の静的フィールドで使用すると、フィールドを使用します。 フィールドのデータは、それを使用する各スレッドに固有です。 + スレッドとアプリケーション ドメインの組み合わせに対し、データの一部が常に一意であることがわかっている場合は、静的フィールドに 属性を適用します。 このフィールドの使用法は、他の静的フィールドと同様です。 フィールドのデータは、使用する各スレッドに対して一意です。 - スレッド相対静的フィールドは、データ スロットよりもパフォーマンスが向上して、コンパイル時の型チェックの利点があります。 + スレッド相対静的フィールドは、データ スロットと比較してパフォーマンスが優れており、コンパイル時の型チェックも可能です。 - すべてのクラス コンス トラクター コード フィールドにアクセスする最初のコンテキストの最初のスレッドで実行されるに注意してください。 他のすべてのスレッドまたは同じアプリケーション ドメイン内のコンテキストで、フィールドが初期化する`null`(`Nothing` Visual Basic で) かどうかは、参照型ではまたはしている場合の値の型の値、既定値にします。 そのため、クラス コンス トラクターを使用してスレッド相対静的フィールドを初期化しないでください。 代わりに、初期化回避スレッド相対静的フィールドと仮定に初期化されます`null`(`Nothing`) または既定値にします。 + クラス コンストラクター コードはいずれも、そのフィールドにアクセスする最初のコンテキストの最初のスレッドで実行されることに注意してください。 同じアプリケーション ドメイン内にある、その他のすべてのスレッドまたはコンテキストについては、これらのフィールドが参照型の場合は `null` (Visual Basic では `Nothing`) に、値型の場合は既定値に初期化されます。 したがって、クラス コンストラクターを使用してスレッド相対静的フィールドを初期化しないでください。 スレッド相対静的フィールドの初期化は回避し、これらのフィールドが `null` (`Nothing`) または既定値に初期化されると仮定します。 ## データ スロット - .NET Framework では、スレッドおよびアプリケーション ドメインの組み合わせに固有の動的なデータ スロットを提供します。 データ スロットの 2 種類があります: スロット、および名前のないスロットをという名前です。 使用して実装されます両方、構造体。 + .NET Framework には、スレッドとアプリケーション ドメインの組み合わせに対して一意の、動的なデータ スロットが用意されています。 このデータ スロットには 2 つのタイプがあります。名前付きスロットと名前のないスロットです。 いずれも、 構造体を使用して実装されます。 -- 名前付きデータ スロットを作成するには、使用、またはメソッドです。 既存の名前付きのスロットへの参照を取得するには、自分の名前を渡します、メソッドです。 +- 名前付きデータ スロットを作成するには、 メソッドまたは メソッドを使用します。 既存の名前付きスロットへの参照を取得するには、その名前を メソッドに渡します。 -- 無名のデータ スロットを作成するには、使用、メソッドです。 +- 名前のないデータ スロットを作成するには、 メソッドを使用します。 - という名前し、スロットの名前の両方を使用して、設定して、スロット内の情報を取得するメソッド。 これらは、常に実行されているスレッドのデータを操作する静的メソッドです。 + 名前付きスロットと名前のないスロットはいずれも、 メソッドと メソッドを使用して、スロット内のデータの設定や取得を行います。 これらは静的メソッドであり、現在実行中であるスレッドのデータを操作する役割を果たします。 - 名前付きスロットは便利、その名前を渡すことによって必要なときに、スロットを取得できるため、メソッドの名前のないスロットへの参照を維持するのではなく、します。 ただし、別のコンポーネントがそのスレッド相対ストレージに対して同じ名前を使用して、スレッド コンポーネントとその他のコンポーネントの両方からコードを実行する場合は、2 つのコンポーネントにそれぞれのデータが破損している可能性があります。 (このシナリオでは、両方のコンポーネントが、同じアプリケーション ドメインで実行されていることと同じデータを共有するが設計されていません。) + 名前付きスロットは、必要なときに メソッドにスロットの名前を渡してスロットを取得できるという利点があります (名前のないスロットの場合は、スロットへの参照を維持する必要があります)。 ただし、他のコンポーネントがそのスレッド相対ストレージに対して同じ名前を使用しており、1 つのスレッドが、ご使用のコンポーネントとその他のコンポーネントの両方からコードを実行する場合、この 2 つのコンポーネントが互いのデータを破損する可能性があります (このシナリオでは、2 つのコンポーネントが同じアプリケーション ドメイン内で実行されており、同じデータを共有するようには設計されていないことを前提としています)。 -## 関連項目 +## 参照 diff --git a/docs/standard/threading/thread-suspend-garbage-collection-and-safe-points.md b/docs/standard/threading/thread-suspend-garbage-collection-and-safe-points.md index db1c8d2960c..22b8df18621 100644 --- a/docs/standard/threading/thread-suspend-garbage-collection-and-safe-points.md +++ b/docs/standard/threading/thread-suspend-garbage-collection-and-safe-points.md @@ -15,25 +15,28 @@ helpviewer_keywords: - threading [.NET Framework], garbage collection - garbage collection, threads ms.assetid: e8f58e17-2714-4821-802a-f8eb3b2baa62 -caps.latest.revision: "7" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: e47674ef8d1b1a7487e42765bcbce4b33cf98769 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: fdd56763712dee9c6fa1f292eb3bbb2f0ccbf505 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # Thread.Suspend、ガベージ コレクション、およびセーフ ポイント -呼び出すとシステム ノートのスレッドの中断が要求されているし、により、実際には、スレッドを中断する前に、安全なポイントに達するまで実行するスレッドのスレッドでします。 スレッド セーフである点で、ガベージ コレクションを実行できる実行ポイントです。 +スレッドで を呼び出すと、システムはスレッドの中断が要求されたことを示し、スレッドを実際に中断する前にセーフ ポイントに到達するまでスレッドを実行することができます。 スレッドのセーフ ポイントは、ガベージ コレクションを実行できる実行ポイントです。 - セーフ ポイントに達すると、ランタイムはように中断されたスレッドは注意が必要、さらに進行状況のマネージ コードに保証されます。 マネージ コードの外部で実行中のスレッドがガベージ コレクションでは常に、その実行をマネージ コードの実行を再開しようとするまで続行します。 + セーフ ポイントに到達すると、ランタイムにより、中断されたスレッドがマネージ コードで続行されないことが保証されます。 マネージ コードの外部で実行中のスレッドは、通常、ガベージ コレクションでは安全であり、その実行はマネージ コードの実行再開が試行されるまで続行します。 > [!NOTE] -> ガベージ コレクションを実行するために、ランタイムは、コレクションの実行スレッドを除くすべてのスレッドを中断する必要があります。 各スレッドは、中断する前に、セーフ ポイントに移動する必要があります。 +> ガベージ コレクションを実行するために、ランタイムはコレクションを実行中のスレッドを除くすべてのスレッドを中断する必要があります。 各スレッドを中断するには、セーフ ポイントに移動する必要があります。 -## 関連項目 +## 参照 [スレッド化](../../../docs/standard/threading/index.md) diff --git a/docs/standard/threading/threading-objects-and-features.md b/docs/standard/threading/threading-objects-and-features.md index 917201bd1d9..4e5808ff266 100644 --- a/docs/standard/threading/threading-objects-and-features.md +++ b/docs/standard/threading/threading-objects-and-features.md @@ -12,15 +12,18 @@ helpviewer_keywords: - threading [.NET Framework], features - managed threading ms.assetid: 239b2e8d-581b-4ca3-992b-0e8525b9321c -caps.latest.revision: "15" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 2a73e5c60a661c171e9e46e6307484cf5e0e6b80 -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 0cb36c004c46e22256928b3b2432da59fb3e6fa2 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # スレッド処理オブジェクトと機能 .NET Framework には、マルチスレッド アプリケーションの作成と管理に役立つ多くのオブジェクトが用意されています。 マネージ スレッドは、 クラスによって表されます。 クラスを使用すると、マルチスレッドのバックグラウンド タスクを簡単に作成し、管理できます。 クラスは、ユーザー インターフェイスと対話するタスクについてそれと同じことを実現します。 クラスは、指定された間隔でバックグラウンド タスクを実行します。 @@ -44,7 +47,7 @@ ms.lasthandoff: 10/18/2017 通知を行ったり通知を待機したりすることによりスレッドの活動を同期するために使用するマネージ イベント待機ハンドルについて説明します。 [ミューテックス](../../../docs/standard/threading/mutexes.md) - 使用する方法について説明します、オブジェクトへのアクセスを同期するために、または独自の同期機構を構築します。 + オブジェクトへのアクセスの同期、または独自の同期機構の構築を を使用して行う方法を説明します。 [インタロックされた操作](../../../docs/standard/threading/interlocked-operations.md) クラスを使用して、値の増減と値の格納をアトミックな 1 回の操作で実行する方法を説明します。 diff --git a/docs/standard/threading/threads-and-threading.md b/docs/standard/threading/threads-and-threading.md index bcc9e2662ca..f2216f26cb0 100644 --- a/docs/standard/threading/threads-and-threading.md +++ b/docs/standard/threading/threads-and-threading.md @@ -13,90 +13,93 @@ helpviewer_keywords: - threading [.NET Framework] - threading [.NET Framework], multiple threads ms.assetid: 5baac3aa-e603-4fa6-9f89-0f2c1084e6b1 -caps.latest.revision: "14" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: b57cac34009e13c27c6d34a0ab402f9ecbe08305 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 114fb704a622d92ab8e92fa866fa0fc9bebf4e58 +ms.sourcegitcommit: c0dd436f6f8f44dc80dc43b07f6841a00b74b23f ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 01/19/2018 --- # スレッドおよびスレッド処理 -オペレーティング システムでは、プロセスを使用して、実行されている別のアプリケーションを区切ります。 スレッドは、オペレーティング システムが、プロセッサ時間を割り当てる基本単位と、複数のスレッドが、プロセス内でコードを実行することができます。 各スレッドは、例外ハンドラー、スケジューリング優先順位、およびシステムを使用して保存のスレッド コンテキストがスケジュールされるまで構造のセットを保持します。 スレッド コンテキストには、シームレスに実行を再開する、スレッドのホスト プロセスのアドレス空間内の CPU レジスタおよびスタック、スレッドのセットを含む、スレッドが必要なすべての情報が含まれます。 +オペレーティング システムは、実行している異なるアプリケーションを分離するために、プロセスを使います。 スレッドはオペレーティング システムがプロセッサ時間を割り当てる基本単位であり、複数のスレッドがそのプロセスの内部でコードを実行できます。 各スレッドは、例外ハンドラー、スケジューリングの優先順位、スレッドがスケジュールされるまでシステムがスレッド コンテキストを保存するために使用する構造体のセットを保持しています。 スレッド コンテキストには、スレッドがシームレスに実行を再開するために必要なすべての情報 (スレッドの CPU レジスタとスタックのセットなど) が含まれ、スレッドのホスト プロセスのアドレス空間内に保持されます。 - さらに、.NET Framework、オペレーティング システム プロセスに細分化によって表される、アプリケーション ドメインと呼ばれる、軽量のマネージ サブプロセスです。 1 つ以上のマネージ スレッド (によって表される)、同じ管理対象プロセス内のアプリケーション ドメインの 1 つまたは任意の数で実行できます。 各アプリケーション ドメインは 1 つのスレッドを開始、そのアプリケーション ドメイン内のコードは追加のアプリケーション ドメインと追加のスレッドを作成できます。 結果は、マネージ スレッドが同じマネージ プロセス; 内のアプリケーション ドメイン間で自由に移動できます。1 つのスレッドが複数のアプリケーション ドメイン間を移動するがあります。 + さらに、.NET Framework では、オペレーティング システムのプロセスが、アプリケーション ドメインと呼ばれ、 によって表される、軽量のマネージ サブプロセスに細分化されます。 1 つ以上のマネージ スレッド ( によって表されます) が、同じマネージ プロセス内の任意の数のアプリケーション ドメインで実行できます。 各アプリケーション ドメインは 1 つのスレッドで開始しますが、そのアプリケーション ドメイン内のコードは、追加のアプリケーション ドメインと追加のスレッドを作成できます。 結果として、マネージ スレッドは同じマネージ プロセス内のアプリケーション ドメイン間を自由に移動できます。ただ 1 つのスレッドが複数のアプリケーション ドメイン間を移動していることもあります。 - Preemptive マルチタスク処理をサポートするオペレーティング システムでは、複数のプロセスから複数のスレッドの同時実行の効果を作成します。 これで必要なスレッド間で利用可能なプロセッサ時間の分割、各スレッドにプロセッサ時間スライスを 1 つずつ割り当ています。 スライスを過ぎると、その時間と別のスレッドの実行を再開、実行中のスレッドが中断されます。 システムは、別に 1 つのスレッドから切り替える、ときに優先されたスレッドのスレッド コンテキストを保存し、[次へ] のスレッドのスレッドのキューに保存されているスレッドのコンテキストを再読み込みします。 + オペレーティング システムがプリエンプティブなマルチタスク処理をサポートしていると、複数プロセスからの複数スレッドの同時実行の効果が作り出されます。 そのためには、利用可能なプロセッサ時間がそれを必要とするスレッドの間で分割され、プロセッサ時間のスライスが各スレッドに次々に割り当てられます。 タイム スライスが経過すると現在実行中のスレッドは中断されて、別のスレッドが実行を再開します。 システムは、スレッドを切り替えるとき、割り込まれたスレッドのスレッド コンテキストを保存し、スレッド キュー内の次のスレッドの保存されているスレッド コンテキストを再度読み込みます。 - タイム スライスの長さは、オペレーティング システムと、プロセッサーによって異なります。 各タイム スライスが小さいために、複数のスレッドは、1 つだけのプロセッサがある場合でも、同時に実行されているに見えます。 場合は、実際には、マルチプロセッサ システムで使用できるプロセッサ間での実行可能なスレッドの配布先です。 + タイム スライスの長さは、オペレーティング システムとプロセッサによって異なります。 各タイム スライスは小さいため、プロセッサが 1 つだけであっても、複数のスレッドが同時に実行しているように見えます。 実際には、これはマルチプロセッサ システムの場合であり、実行可能なスレッドは利用可能なプロセッサ間に分散されます。 -## 複数のスレッドを使用するには、場合 - ユーザーの介入を必要とするソフトウェアが、豊富なユーザー エクスペリエンスを提供できる限り早くのユーザーのアクティビティに反応する必要があります。 ただし、同時には、できるだけ高速のユーザーにデータを提示するために必要な計算を実行にする必要があります。 アプリケーションでは、実行のスレッドを 1 つだけを使用する場合は、結合[非同期プログラミング](../../../docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md)で[.NET Framework リモート処理](http://msdn.microsoft.com/en-us/eccb1d31-0a22-417a-97fd-f4f1f3aa4462)または[XML Web サービス](http://msdn.microsoft.com/en-us/1e64af78-d705-4384-b08d-591a45f4379c)ASP を使用して作成されました。ユーザーと、アプリケーションのデータの処理時間が低下するを増やすには独自の応答性をさらに、他のコンピューターの処理時間を使用する .NET します。 入力/出力を要する処理を実行する場合は、アプリケーションの応答性を向上させる、また I/O 完了ポートを使用することができます。 +## 複数のスレッドを使用する場合 + ユーザーの介入を必要とするソフトウェアは、よいユーザー エクスペリエンスを提供するため、できる限り早くユーザーのアクティビティに応答する必要があります。 ただし同時に、できるだけ速くユーザーにデータを提示するために必要な計算を実行する必要もあります。 アプリケーションが実行スレッドを 1 つしか使っていない場合は、[非同期プログラミング](../../../docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md)と [.NET Framework リモート処理](http://msdn.microsoft.com/library/eccb1d31-0a22-417a-97fd-f4f1f3aa4462)または ASP.NET を使って作成された [XML Web サービス](http://msdn.microsoft.com/library/1e64af78-d705-4384-b08d-591a45f4379c)を組み合わせて、そのコンピューター自体の処理時間に加えて他のコンピューターの処理時間を使うことにより、応答性を向上させ、アプリケーションのデータ処理時間を減らすことができます。 入力/出力の多い処理を行っている場合は、I/O 完了ポートを使ってアプリケーションの応答性を高めることもできます。 -### 複数のスレッドの利点 - 複数のスレッドを使用して、データがユーザーへの応答性の向上し、ほぼ同時に実行するジョブを取得するために必要なデータの処理に使用できる最も強力な方法です。 1 つのプロセッサを搭載したコンピューターに複数のスレッドがバック グラウンドでデータを処理するユーザーのイベント間の時間の短い時間の利用によって、この効果を作成できます。 たとえば、ユーザーは、別のスレッドが同じアプリケーション内でワークシートの他の部分を再計算中に、スプレッドシートを編集できます。 +### 複数スレッドの長所 + ただし、複数のスレッドを使うことは、ユーザーへの応答性を向上させ、ほぼ同時にジョブの完了に必要なデータを処理するために利用できる、最も強力な方法です。 1 プロセッサのコンピューターでは、複数のスレッドによってこの効果を作り出すことができ、ユーザー イベントの間の短い時間を利用してバックグラウンドでデータを処理します。 たとえば、別のスレッドが同じアプリケーション内でワークシートの他の部分を再計算中に、ユーザーはスプレッドシートを編集できます。 - 変更しない限り、同じアプリケーションの場合は、1 つ以上のプロセッサを搭載したコンピューター上で実行時にユーザーの満足度に著しくです。 1 つのアプリケーション ドメインでは、次のタスクを実行するのに複数のスレッドを使用できます。 + アプリケーションを変更しなくても、複数のプロセッサを搭載したコンピューターでアプリケーションを実行するだけで、ユーザーの満足度が著しく向上します。 1 つのアプリケーション ドメインが複数のスレッドを使うことにより、次のタスクを実行できます。 -- データベース、Web サーバーに、ネットワーク経由で通信します。 +- ネットワーク経由で Web サーバーやデータベースと通信します。 -- 大量の時間がかかる操作を実行します。 +- 長い時間がかかる操作を実行します。 -- さまざまな優先順位のタスクを識別します。 たとえば、優先度の高いスレッドがタイム クリティカルなタスクを管理し、優先度の低いスレッドが他のタスクを実行します。 +- 優先順位が異なるタスクを区別します。 たとえば、高優先度のスレッドでタイム クリティカルなタスクを管理し、低優先度のスレッドで他のタスクを実行します。 -- 応答性を維持、バック グラウンド タスクに時間を割り当てているときに、ユーザー インターフェイスを使用できます。 +- ユーザー インターフェイスの応答性を維持しながら、バックグラウンド タスクに時間を割り当てることができます。 -### 複数のスレッドの短所 - 可能な限りは、オペレーティング システム リソースの使用を最小限に抑えるため、パフォーマンスを向上させると、少数のスレッドを使用することをお勧めします。 スレッド処理と、アプリケーションの設計時に考慮すには、リソースの要件と競合の可能性もあります。 リソース要件は次のとおりです。 +### 複数スレッドの短所 + 使うスレッドの数をできるだけ少なくすることをお勧めします。そうすることで、オペレーティング システムのリソースの使用量が最小限になり、パフォーマンスが向上します。 スレッド処理には、アプリケーションの設計時に考慮する必要のあるリソースの要件と競合の可能性もあります。 リソースの要件は次のとおりです。 -- システム プロセス、必要なコンテキスト情報のためのメモリを消費する**AppDomain**オブジェクト、およびスレッドです。 プロセスの数ではそのため、 **AppDomain**オブジェクト、および作成できるスレッドが使用可能なメモリによって制限されます。 +- システムは、プロセス、**AppDomain** オブジェクト、およびスレッドで必要なコンテキスト情報にメモリを消費します。 したがって、作成できるプロセス、**AppDomain** オブジェクト、スレッドの数は、利用可能なメモリによって制限されます。 -- 大量のプロセッサ時間を消費の多数のスレッドを追跡します。 スレッドが多すぎるがある場合、それらのほとんどは重要な進行状況を加えないでます。 現在のスレッドのほとんどは、1 つのプロセスでは、他のプロセス内のスレッドが頻繁にスケジュールされます。 +- 多数のスレッドを追跡すると、大量のプロセッサ時間を消費します。 スレッドが多すぎる場合、そのほとんどは処理があまり進行しません。 現在のスレッドのほとんどが 1 つのプロセスに含まれる場合、他のプロセスのスレッドはスケジュールの頻度が低下します。 -- コードが実行される多数のスレッドの制御は複雑であり、多くのバグのソースを指定できます。 +- 多数のスレッドを使うコード実行の制御は複雑であり、多くのバグの原因になる可能性があります。 -- スレッドの破棄するには、発生する可能性が知ることと、それらの問題を処理する必要があります。 +- スレッドを破棄するときは、発生する可能性があることを認識し、それらの問題に対処する必要があります。 - リソースへの共有アクセスを提供すると、競合を作成できます。 競合を避けるためには、同期、か、共有リソースへのアクセスを制御する必要があります。 (2 つのスレッドで応答を停止するには、他のそれぞれが待機中に) デッドロックなどの問題につながる可能性が正しく (同じまたは別のアプリケーション ドメイン) でのアクセスを同期するためにエラーや (ために異常な結果が発生したときに競合状態予測できない動作の 2 つのイベントのタイミングで)。 システムでは、複数のスレッド間の共有リソースを調整するために使用する同期オブジェクトを提供します。 スレッドの数を減らすと、リソースを同期するためにやすくなります。 + リソースへの共有アクセスを提供すると、競合が発生する場合があります。 競合を避けるには、共有リソースを同期するか、共有リソースへのアクセスを制御する必要があります。 (同じアプリケーション ドメイン内または異なるアプリケーション ドメイン内の) アクセスを適切に同期できないと、デッドロック (2 つのスレッドが相互の完了を待って応答を停止すること) や競合状態 (2 つのイベントのタイミングに対する予測できない重大な依存のために異常な結果が発生するとき) などの問題が発生する可能性があります。 システムが提供する同期オブジェクトを使って、複数のスレッド間のリソース共有を調整できます。 スレッドの数を減らすと、リソースの同期が容易になります。 同期が必要なリソースは次のとおりです。 - システム リソース (通信ポートなど)。 -- リソース (ファイル ハンドル) などの複数のプロセスと共有します。 +- 複数のプロセスによって共有されるリソース (ファイル ハンドルなど)。 -- 1 つのアプリケーション ドメインのリソース (など、グローバルの静的インスタンス フィールドと) 複数のスレッドによってアクセスします。 +- 複数のスレッドによってアクセスされる 1 つのアプリケーション ドメインのリソース (グローバル フィールド、静的フィールド、インスタンス フィールドなど)。 -### スレッド処理とアプリケーションのデザイン - 一般を使用して、クラスは、他のスレッドがブロックされていないことと、ときに予期しない特定のタスクのスケジューリング、比較的短いタスクに複数のスレッドを処理する最も簡単な方法です。 ただし、これには、独自のスレッドを作成する理由の数があります。 +### スレッド処理とアプリケーションの設計 + 一般に、他のスレッドをブロックしない比較的短いタスクの複数のスレッドを処理する場合で、タスクの特定のスケジューリングを予期しないときは、 クラスを使うのが最も簡単な方法です。 ただし、独自のスレッドを作成するにはいくつかの理由があります。 -- 特定の優先順位に作業する場合。 +- タスクに特定の優先順位を設定する必要がある場合。 -- ある場合は、タスクを実行時間の長い (およびその他のタスクをブロックするため) ことがあります。 +- タスクの実行時間が長くなる (したがって他のタスクをブロックする) 可能性がある場合。 -- シングル スレッド アパートメント スレッドに配置する必要があるかどうか (すべて**ThreadPool**スレッドがマルチ スレッド アパートメント内)。 +- シングルスレッド アパートメントにスレッドを配置する必要がある場合 (すべての **ThreadPool** スレッドはマルチスレッド アパートメント内です)。 -- 場合は、安定した id をスレッドに関連付けられている必要があります。 たとえば、そのスレッドの中止、中断したり、または名前で探索を専用のスレッドを使用する必要があります。 +- スレッドに関連付けられた安定した ID が必要な場合。 たとえば、名前でスレッドを中止、中断、または探索するには、専用のスレッドを使う必要があります。 -- .NET Framework version 2.0 は、ユーザー インターフェイスと対話するバック グラウンド スレッドを実行する必要がある場合、スレッド間のユーザー インターフェイス スレッドにマーシャ リングと、イベントを使用して通信するコンポーネントです。 +- ユーザー インターフェイスと対話するバックグラウンド スレッドを実行する必要がある場合、.NET Framework バージョン 2.0 は、イベントを使って通信し、ユーザー インターフェイス スレッドへのスレッド間マーシャリングを行う、 コンポーネントを提供します。 -### スレッド処理および例外 - スレッドで例外を処理します。 偶数のバック グラウンド スレッドでのスレッドでハンドルされない例外は、一般に、プロセスを終了します。 この規則には、次の 3 つの例外があります。 +### スレッド処理と例外 + スレッドで例外を処理します。 スレッドでハンドルされない例外は、バックグラウンド スレッドであっても、一般に、プロセスを終了します。 この規則には、次の 3 つの例外があります。 -- Aためのスレッドでスローされるが呼び出されました。 +- が呼び出されたため、スレッドで がスローされる。 -- が、アプリケーション ドメインがアンロードされるため、スレッドでスローされます。 +- アプリケーション ドメインがアンロードされているため、スレッドで がスローされる。 - 共通言語ランタイムまたはホスト プロセスがスレッドを終了する。 - 詳細については、次を参照してください。[マネージ スレッドの例外](../../../docs/standard/threading/exceptions-in-managed-threads.md)です。 + 詳しくは、「[マネージ スレッドの例外](../../../docs/standard/threading/exceptions-in-managed-threads.md)」をご覧ください。 > [!NOTE] -> .NET Framework バージョン 1.0 および 1.1 では、共通言語ランタイムはサイレント モードでスレッド プールのスレッドの例では、いくつかの例外をトラップします。 これはアプリケーションの状態が破損し、デバッグが困難に可能性のあるアプリケーションが停止するされます。 +> .NET Framework Version 1.0 および 1.1 では、スレッド プールのスレッドでのものなど、一部の例外は共通言語ランタイムによって通知なしにトラップされます。 このため、アプリケーション状態が破損し、最終的にアプリケーションが停止することになり、デバッグが困難になることがあります。 -## 関連項目 +## 参照 [マルチスレッド処理のためのデータの同期](../../../docs/standard/threading/synchronizing-data-for-multithreading.md) diff --git a/docs/standard/threading/timers.md b/docs/standard/threading/timers.md index 917ea24fcbe..ae7aa9247c2 100644 --- a/docs/standard/threading/timers.md +++ b/docs/standard/threading/timers.md @@ -16,30 +16,33 @@ helpviewer_keywords: - threading [.NET Framework], timers - timers, about timers ms.assetid: 7091500d-be18-499b-a942-95366ce185e5 -caps.latest.revision: "12" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: fca27cf5261e253c2bb3d3a10fa3db31f28a2415 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 80b4cee03e934d3aec98ca323aac43f934c56455 +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 12/23/2017 --- # タイマー タイマーとは、指定時刻に指定のデリゲートを呼び出す軽量オブジェクトのことです。 スレッド プール内の 1 つのスレッドが、待機操作を実行します。 - クラスの使用法は単純です。 作成する、**タイマー**渡す、コールバック、最初に発生時刻、およびコールバック呼び出しの間隔を表す時間に渡される状態を表すオブジェクトをコールバック メソッドにデリゲートします。 保留中のタイマーをキャンセルする、 **Timer.Dispose**関数。 + クラスの使用法は単純です。 **Timer** を作成するには、コールバック メソッドへの デリゲート、コールバックに渡される状態を表すオブジェクト、最初に発生する時間、コールバック呼び出しの間隔を表す時間を渡します。 保留中のタイマーを取り消すには、**Timer.Dispose** 関数を呼び出します。 > [!NOTE] > 他にも 2 つのタイマー クラスがあります。 クラスは、ビジュアルなデザイナーを操作するコントロールで、ユーザー インターフェイスのコンテキストで使用するように設計されています。このクラスは、ユーザー インターフェイス スレッドでイベントを発生させます。 クラスは から派生するため、ビジュアルなデザイナーで使用できます。このクラスもイベントを発生させますが、イベントは スレッドで発生します。 クラスは スレッドでコールバックを行い、イベント モデルは使用しません。 またこのクラスは、状態オブジェクトをコールバック メソッドに提供します。他のタイマーは状態オブジェクトを提供しません。 このクラスは、非常に軽量です。 - 次のコード例は、キーを押すまで 1 秒ごとに 1 秒 (1000 ミリ秒) とタイマー刻みの後に開始するタイマーを開始、 **Enter**キー。 実行中にタイマーがガベージ コレクションの対象とならないように、このタイマーへの参照を含む変数はクラス レベルのフィールドとします。 積極的なガベージ コレクションの詳細については、「」を参照してください。 + 次のコード例は、1 秒 (1000 ミリ秒) 後に起動し、**Enter** キーを押すまで 1 秒ごとに時を刻むタイマーを開始します。 実行中にタイマーがガベージ コレクションの対象とならないように、このタイマーへの参照を含む変数はクラス レベルのフィールドとします。 積極的なガベージ コレクションの詳細については、「」を参照してください。 [!code-cpp[System.Threading.Timer#2](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.Threading.Timer/CPP/source2.cpp#2)] [!code-csharp[System.Threading.Timer#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.Threading.Timer/CS/source2.cs#2)] [!code-vb[System.Threading.Timer#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.Threading.Timer/VB/source2.vb#2)] -## 関連項目 +## 参照 [スレッド処理オブジェクトと機能](../../../docs/standard/threading/threading-objects-and-features.md) diff --git a/docs/standard/threading/using-threads-and-threading.md b/docs/standard/threading/using-threads-and-threading.md index 7cd458fff29..7399a33a386 100644 --- a/docs/standard/threading/using-threads-and-threading.md +++ b/docs/standard/threading/using-threads-and-threading.md @@ -12,42 +12,45 @@ helpviewer_keywords: - threading [.NET Framework], about threading - managed threading ms.assetid: 9b5ec2cd-121b-4d49-b075-222cf26f2344 -caps.latest.revision: "14" +caps.latest.revision: author: rpetrusha ms.author: ronpet manager: wpickett -ms.openlocfilehash: 80eb4c3bb98acdd1f83dbf5bcf57b2f7b295742b -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.workload: +- dotnet +- dotnetcore +ms.openlocfilehash: 5bed13950a29cfa787ef8c9eb2608c6d74dfd49f +ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 12/23/2017 --- # スレッドの使用とスレッド処理 -このセクションのトピックでは、作成と管理のマネージ スレッド、マネージ スレッドにデータを渡すし、結果を取得する方法、およびスレッドの破棄を処理する方法について説明、です。 +このセクションのトピックでは、マネージ スレッドの作成と管理、マネージ スレッドにデータを渡して結果を戻す方法、およびスレッドを破棄して を処理する方法について説明します。 ## このセクションの内容 [スレッドを作成し、開始時にデータを渡す](../../../docs/standard/threading/creating-threads-and-passing-data-at-start-time.md) - について説明し、データを取得する方法と、新しいスレッドにデータを渡す方法を含め、マネージ スレッドの作成方法を示します。 + データを新しいスレッドに渡す方法とデータを戻す方法など、マネージ スレッドの作成について説明します。 [スレッドの一時中断と再開](../../../docs/standard/threading/pausing-and-resuming-threads.md) - 一時停止と再開のマネージ スレッドがもたらす影響をについて説明します。 + マネージ スレッドの一時中断と再開の影響について説明します。 [スレッドの破棄](../../../docs/standard/threading/destroying-threads.md) - マネージ スレッドは、および処理する方法を破棄するがもたらす影響について説明します、です。 + マネージ スレッドの破棄の影響と、 の処理方法について説明します。 [スレッドのスケジューリング](../../../docs/standard/threading/scheduling-threads.md) - スレッドの優先順位とスレッドのスケジューリング影響について説明します。 + スレッドの優先順位とスレッドのスケジューリングへの影響について説明します。 ## 参照 - リファレンス ドキュメントを提供、クラスで、送信元は、アンマネージ コードまたはマネージ アプリケーションで作成されたかどうか、マネージ スレッドを表します。 + クラスのリファレンス ドキュメントです。このクラスは、アンマネージ コードから作成されたか、マネージ アプリケーションで作成されたかにかかわらず、マネージ スレッドを表します。 - リファレンス ドキュメントを提供、パラメーターのないスレッド プロシージャを表すデリゲート。 + パラメーターなしのスレッド プロシージャを表す デリゲートに関するリファレンス ドキュメントを提供します。 - ありませんが、厳密な型指定には、スレッド プロシージャにデータを渡すための簡単な方法を提供します。 + 厳密な型指定はありませんが、スレッド プロシージャにデータを渡す簡単な方法を提供します。 ## 関連項目 [スレッドおよびスレッド処理](../../../docs/standard/threading/threads-and-threading.md) - マネージ スレッド処理の概要を提供します。 + マネージ スレッドの概要を提供します。 diff --git a/docs/toc.md b/docs/toc.md index a7f64c83e5b..9f3f35a6ed0 100644 --- a/docs/toc.md +++ b/docs/toc.md @@ -9,7 +9,6 @@ ### [.NET Standard の新機能](standard/whats-new/whats-new-in-dotnet-standard.md) ## [ターゲット フレームワーク](standard/frameworks.md) ## [.NET 用語集](standard/glossary.md) -## [mdoc を使用したドキュメントの構築](standard/mdoc/index.md) ## [アーキテクチャ ガイダンス](standard/guidance-architecture.md) ### [ASP.NET Core および Microsoft Azure での最新の Web アプリケーションの設計](standard/modern-web-apps-azure-architecture/) ### [Azure クラウドおよび Windows コンテナーで既存の .NET アプリケーションを最新にする](standard/modernize-with-azure-and-containers/) @@ -25,9 +24,10 @@ ### [クラス ライブラリの概要](standard/class-library-overview.md) ### [基本データ型](standard/base-types/) ## [.NET クラス ライブラリ](standard/class-libraries.md) -## アナライザー +## [アナライザー](standard/analyzers/index.md) ### [API アナライザー](standard/analyzers/api-analyzer.md) ### [移植性アナライザー](standard/analyzers/portability-analyzer.md) +### [フレームワーク アナライザー](standard/analyzers/framework-analyzer.md) ## [例外の処理とスロー](standard/exceptions/) ## [.NET アセンブリ ファイルの形式](standard/assembly-format.md) ## [ガベージ コレクション](standard/garbage-collection/) @@ -266,6 +266,7 @@ ### [方法: `String.Split` を使用して文字列を解析する](csharp/how-to/parse-strings-using-split.md) ### [文字列を連結する方法](csharp/how-to/concatenate-multiple-strings.md) ### [方法 文字列を DateTime に変換する](standard/base-types/parsing-datetime.md) +### [文字列を検索する方法](csharp/how-to/search-strings.md) ## [.NET Compiler Platform SDK (Roslyn API)](csharp/roslyn-sdk/) ## [C# プログラミング ガイド](csharp/programming-guide/) diff --git a/includes/tpl-install-instructions.md b/includes/tpl-install-instructions.md new file mode 100644 index 00000000000..5b190e1e49e --- /dev/null +++ b/includes/tpl-install-instructions.md @@ -0,0 +1,2 @@ +> [!NOTE] +> TPL データフロー ライブラリ ( 名前空間) は、.NET と一緒には配布されません。 Visual Studio に 名前空間をインストールするには、プロジェクトを開き、**[プロジェクト]** メニューの **[NuGet パッケージの管理]** をクリックし、`System.Threading.Tasks.Dataflow` パッケージをオンラインで検索します。 または、[.Net Core CLI](~/docs/core/tools/index.md) を使ってインストールするには、`dotnet add package System.Threading.Tasks.Dataflow` を実行します。