ポーリング処理を実装するには、Ext.util.TaskRunnerを使います。
Classic Toolkit、Modern Toolkit共通で利用できます。
以下のサンプルは、ブラウザのコンソールに1秒間隔でログを記述します。
デモ&ソース
Sencha ExtJs Modernで電卓付き数値入力コントロールを作ってみた。
Enterprise向けSPAを開発するのに向いているSencha ExtJs
今回は、Modern Tookkitで電卓付き数値入力コントロールを作ってみました。
ソースとデモはこちらから
https://fiddle.sencha.com/#view/editor&fiddle/1n34
今回は、Modern Tookkitで電卓付き数値入力コントロールを作ってみました。
ソースとデモはこちらから
https://fiddle.sencha.com/#view/editor&fiddle/1n34
Microsoft Teamsにエラーログを出力するLog4Net Custom Appenderを作ってみた。
Custom AppenderクラスはAppenderSkeletonを継承し、Append()メソッドをオーバライドして作成。
IncomingWebhooksのURLをlog4net.configから取得できるようにプロパティを作成しておく。
●Custom Appenderクラスは以下のとおり。
MSTeamsUtil()の実装についてはこちらを参考にして下さい。
●log4net.configの設定方法は以下のとおりpublic class MSTeamsAppender : AppenderSkeleton {//Microsoft TeamsのコネクタURLpublic string IncomingWebhookURL { get; set; }// Microsoft Teamsにログ追記protected override void Append(LoggingEvent loggingEvent) {var mstu = new MSTeamsUtil();mstu.PostPlainMessage(IncomingWebhookURL, RenderLoggingEvent(loggingEvent));}}
こんな感じでログが投稿されます。<?xml version="1.0" encoding="utf-8" ?><configuration><log4net><appender name="MSTeamsAppender" type="FxCommonLib.Log4NetAppender.MSTeamsAppender, FxCommonLib"><incomingWebhookURL value="https://outlook.office.com/・・・" /><layout type="log4net.Layout.PatternLayout"><ConversionPattern value="%username %d [%t] %-5p %c - %m%n" /></layout><filter type="log4net.Filter.LevelRangeFilter"><levelMin value="WARN" /><levelMax value="FATAL" /></filter></appender><root><level value="INFO" /><appender-ref ref="MSTeamsAppender" /></root></log4net></configuration>
Microsoft TeamsにC#でメッセージ投稿してみた
最近、無償提供されたMicrosoft Teamsにプログラムからメッセージ投稿してみたいと思い、実装してみた。
システム監視、センサなどから情報投稿など、いろいろ利用できそう。
まずは、Microsoft TeamsのIncoming Webhook APIのURLを取得。
取得方法の詳細はこちら
○Microsoft Teamsに平文メッセージを投稿するためのユーティリティメソッド
public class MSTeamsUtil {
// Microsoft Temasに平文メッセージを投稿
public void PostPlainMessage(string webhookURL, string message) {
using (var client = new WebClient()) {
var param = new Dictionary();
// Textパラメータは必須
param["Text"] = message;
var json = JsonConvert.SerializeObject(param);
client.Headers.Add(HttpRequestHeader.ContentType, "application/json;charset=UTF-8");
client.Encoding = Encoding.UTF8;
client.UploadString(webhookURL, json);
}
}
}
public class MSTeamsUtilTest {
//取得したImcoming WebhooksのURLをセット
private string _webhookURL = "https://outlook.office.com/webhook/・・・";
public void PostPlainMessageTest() {
var mst = new MSTeamsUtil();
mst.PostPlainMessage(_webhookURL, "hoge hoge");
}
}
エラーの原因は、よく解らないので、追々調査してみることに。
代わりにWebClientに変更して実装してみるとメッセージ投稿に成功した。
なお、HttpClientを利用する時はリクエストの度にインスタンス生成・破棄してはならにとのこと。
TCPコネクションが都度、張られ、パフォーマンスを低下させるとのこと。
WebClientではリクエストの度にインスタンス生成・破棄してもTCPコネクションが使い回されるため問題ない。
【参考】
・C# HTTPクライアントまとめ
・不適切なインスタンス化のアンチパターン
登録:
投稿 (Atom)
厳選 Visual Studioの便利なショートカット
エラー箇所にジャンプ 「Ctrl + Shift + F12」 ブレークポイント 設定/解除 「F9」 有効化/無効化 「Ctrl + F9」 ViEmu特有 「:ls」:バッファナンバーのリストを表示。 「:b2」:バッファ2のファイルを開く。 「:n」:次のバッファのファ...
-
以下のSampleのとおり、ReadJEnc.JP.GetEncoding()メソッドで文字コードを自動判定することができます。 実装例 public void DetectingEncodeTest() { var path = @"C:\Te...
-
最近、無償提供されたMicrosoft Teamsにプログラムからメッセージ投稿してみたいと思い、実装してみた。 システム監視、センサなどから情報投稿など、いろいろ利用できそう。 まずは、Microsoft TeamsのIncoming Webhook APIのURLを...
-
ファイルがロックされているかどうか判定 public class ExchangeUtil : PublicWebApiUtil { /// ファイルが開かれてロックされているかどうか /// true:ロックされている/false:されていない p...