async-awaitベースの非同期処理を制御する方法をまとめました。コードはわざと冗長に書いています。 概要: Taskベースのワーカースレッド生成 他の非同期I/Oと連携してタスクを制御する方法 TaskとLINQを応用して、多量の計算を安全に並列実行させる方法 Taskを使っていない非同期処理をTask化する方法 非同期処理のキャンセルの実現方法 WinRT・ユニバーサルWindowsアプリケーション(UWP)での非同期処理とTaskの連携方法 読む前に補足 C#でTaskやasync-awaitを使った非同期処理の書き方を探しているのであれば、ポイントに絞って書いた、こちらの記事をお勧めします: 「できる!C#で非同期処理(Taskとasync-await)」 Taskクラスの使用例として、ワーカースレッドを起動するという例が良く挙げられます。本記事も最初にTask.Runによるワ
Extras Dynamically Composing Expression Predicates Suppose you want to write a LINQ to SQL or Entity Framework query that implements a keyword-style search. In other words, a query that returns rows whose description contains some or all of a given set of keywords. We can proceed as follows: IQueryable<Product> SearchProducts (params string[] keywords) { IQueryable<Product> query = dataContext.Pro
2014/11/12 の深夜、Connect(); 開発者イベント Day 1にて Visual Studio/Azure に関する大きな発表がありました。 そのうちの ASP.NET 関連でどのような発表があったか調べました。 まず、Visual Studio 2015 Preview と Visual Studio 2013 Update 4 の2つが公開されています。 他、以下の内容が発表されました。 内容 1. ASP.NET 5 Preview runtime(VS 2015 Preview のみ) 2. ASP.NET 5 Preview Tools(VS 2015 Preview のみ) 3. ASP.NET Tools/Runtime Update(VS 2015 Preview と VS 2013 Update 4) WebForm 4.6 Improvements(VS
マイクロソフトは11月12日(日本時間13日未明)、同社のイベントConnect();において.NET server frameworkのLinuxとMacOS X用オフィシャルディストリビューションを発表しました。 これは.NET Core Runtimeと.NET Frameworkのオープンソース化とあわせて発表されたもの。これによってWindowsだけでなく、Linux、Mac OS Xでもサーバサイドの.NETアプリケーションをビルドし、実行することが可能になります。 サーバサイドの.NETテクノロジーをマルチプラットフォームに展開 これまで.NETテクノロジーはWindowsの強みとして提供されていました。今回のサーバサイド.NETのオープンソース化、および.NET serve frameworkの展開により、マイクロソフトはサーバサイドの.NETテクノロジーをあらゆるプラット
イミテーション・ゲーム/エニグマと天才数学者の秘密(吹替版) ベネディクト・カンバーバッチAmazon アラン・チューリング役に、ベネディクト・カンバーバッチがハマってた。 エニグマ解読の物語を主軸に、アラン・チューリングの男女関係や学生時代の回想シーンが織り交ぜられていて見ごたえがあった。 続きを読む ダンジョン飯 12巻 (HARTA COMIX) 作者:九井 諒子KADOKAWAAmazon 話を思い出しながら流し読み。良いんじゃなかろうか。 ヴェノム:レット・ゼア・ビー・カーネイジ (吹替版) トム・ハーディAmazon 見た。 歳のせいか、アクション&BGM激しめは見ていてちょっと疲れるなぁと。ヴェノムも主人公も精神年齢低そうだなぁ…という小並感。 ハイパーインフレーション 4 (ジャンプコミックスDIGITAL) 作者:住吉九集英社Amazon 途中まで読んで「文字多ッ…」って
このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 パッケージを作成して NuGet で公開する Clark Sell 昨年の 11 月号で、開発者向けの新しいパッケージ管理エコシステムとして NuGet を Phil Haack が紹介しました (msdn.microsoft.com/magazine/hh547106)。NuGet は Outercurve Foundation のプロジェクトで、Microsoft .NET Framework の最も優れたパッケージ管理システムとなることを目指しています。プロジェクト チームは、開発者コミュニティと連携して活動しているマイクロソフトの開発者が大半を占めます。開発エコシステムに NuGet を導入すれば、.
今回取り上げるのは「プライマリコンストラクタ」です。テキトーな日本語に直すと「一次コンストラクタ」などといった感じになるのでしょうか。この機能を簡単に説明すると、コンストラクタをひとつだけ定義する機能です。それでは順番に見て行きましょう。 とりあえず使ってみる 最小限のサンプルを書いてみるとすると以下のようになります。クラス名の横に関数の引数のような記述がされているのが分かります。このクラス定義 + コンストラクタみたいな書き味がプライマリコンストラクタです。これだけで、「string型のtitleという名前の変数を1つだけ引数に取るコンストラクタを持つBookクラス」が表現できます。 class Book(string title) {} このプライマリコンストラクタの引数は、前回紹介した自動実装プロパティ初期化子やフィールドの初期化に利用できます。例えば以下のような感じです。 clas
「Try! C# vNext」ということで、次期C#の新機能を少しずつ試していきたいと思います。まず最初は自動実装プロパティ初期化子 (= Auto-property initializers) です。これまではメンバー変数の初期化はクラス宣言と同時にできたのですが、自動実装プロパティはコンストラクタなどでしか初期化ができませんでした。その制約を取り払い、より簡潔な記述を可能にしようというものです。 とりあえず使ってみる 使い方は簡単で、以下のように自動実装プロパティに対して値を代入するように記述するだけです。 class Book { public string Title{ get; set; } = "Untitled"; public int Price{ get; set; } = 100; } これは以下の書き方と等価です。定型的な初期化するだけのコンストラクタがほぼほぼ不要に
例外処理はtry句でスローされる例外の型に応じて処理を書き分けます。また、ひとつの例外の型でエラー条件が分かれる場合はcatch句の中にif文を書いて分岐します。例えば以下のような感じです。 try { //--- SQL Serverへの何らかのアクセス } catch (SqlException ex) //--- SqlExceptionの派生クラスに関する例外処理 { if (ex.Number == 1205) { //--- デッドロック発生時 } else { //--- デッドロック以外のSqlExceptionに関する処理 } } catch (Exception ex) { //--- その他のすべての例外 } C# vNextではこのエラーの条件分岐 (= if文) に当たる部分をcatch句の一部として書けるようになりました。つまり、catch句で引っ掛ける例外のフ
これまでC# vNextの新機能についていくつか紹介してきましたが、個人的にラムダ形式プロパティよりも、null伝搬演算子よりも、catch/finally句で利用できるawait演算子よりもずっと ×2 興奮したのが今回取り上げるnameof演算子 (nameof operator) です。簡単に言うと、変数名や関数名などをサクッと取得するためのキーワードです。 とりあえず使ってみる nameof演算子の利用方法は以下のような感じです。このように、非常にカジュアルに利用することができます。 var n1 = nameof(value); var n2 = nameof(Console); var n3 = nameof(Console.Title); var n4 = nameof(Console.WriteLine); //--- それぞれの変数の値 /* n1 = value n2
三項演算子はひとつの式の中で条件式を表現できて非常に便利です。言うまでもないかもしれませんが、例えば以下のような書き方ができます。 var name = "じんぐる"; return name == null ? "不明" : name; /* //--- 以下と同じ意味 var name = "じんぐる"; if (name != null) return name; return "不明"; */ 上記のような書き方は全然問題ないのですが、「値をnullと比較して、nullでなければそのまま値を返し、nullだったら既定値を返す」という処理は定型句として結構あります。そこでこの定型句をより短く記述するため、C# 2.0でnull合体演算子という短縮形が追加されました。とても簡潔ですね。 var name = "じんぐる"; return name ?? "不明"; null条件演算子
接続文字列の書き方をまとめてみる - しばやん雑記 でまとめた内容が、流石にちょっと古くなってきたので Azure 周りも含めてアップデートを行っておきます。 SQL Server LocalDB LocalDB は SQL Server 2012 から追加された、インスタンスが常時起動しないタイプの SQL Server になります。必要な時のみインスタンスが立ち上がるので、開発時には役に立つかと思います。 <connectionStrings> <add name="{接続文字列名}" connectionString="Data Source=(localdb)\v11.0;Integrated Security=True;AttachDbFileName={データベースファイル名}" providerName="System.Data.SqlClient" /> </connect
特集:フレッシュマン企画 【2011年度版】 .NET開発者のためのオンライン・リソース・ガイド デジタルアドバンテージ 一色 政彦 2011/04/19 本稿は、これから.NETでプログラミングを始めようとしている方や、新しく.NETでの開発に携わることになったフレッシュマンに贈るオンライン・リソース・ガイドの2011年度版である。インターネット上に数ある.NET関連サイトの中で、.NET開発者がまずは押さえておくべきWebサイトについてまとめている。 ●本稿がまとめているサイト&ジャンル分けについて .NET開発者がよく利用するサイトの代表は、やはり.NET Framework & Visual Studioを提供するマイクロソフトのサイトだろう。だが、ひとくくりに「マイクロソフトのサイト」といっても、マイクロソフトが運営するサイトは本当にたくさんあり、それぞれのコンテンツも膨大となっ
Thousands of teams worldwide trust MyGet with their package management and governance NuGet is the defacto open platform for sharing finished code packages with .NET developers around the world. From DLLs to other content needed in the projects that consume these packages, the Microsoft-supported mechanism for sharing code is NuGet, which defines how packages for .NET are created, hosted, and cons
.NET Native is a precompilation technology for building and deploying UWP apps. .NET Native is included with Visual Studio 2015 and later versions. It automatically compiles the release version of UWP apps that are written in managed code (C# or Visual Basic) to native code. Typically, .NET apps are compiled to intermediate language (IL). At run time, the just-in-time (JIT) compiler translates the
多くのパーソナル コンピューターとワークステーションには、複数スレッドの同時実行を可能にする複数の CPU コアがあります。 ハードウェアを活用するには、コードを並列化して複数のプロセッサに負荷を分散します。 以前は、並列化には低水準のスレッドおよびロックの操作が必要でした。 Visual Studio と .NET では、ランタイム、クラス ライブラリの型、および診断ツールを提供することで、並列プログラミングのサポートを強化しています。 .NET Framework 4 に導入されたこれらの機能によって、並行開発が簡略化されます。 スレッドやスレッド プールを直接操作することなく、効率的で詳細な、拡張性のある並列コードを自然な表現方法で記述できるようになります。 .NET の並列プログラミング アーキテクチャの高度な概要を次の図に示します。 関連トピック テクノロジ 説明
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く