23/07/15 12:52:20.24 x4tryG3A0.net
初心者です。
非同期メソッドにCancellationTokenを渡して、エラーハンドリングを行う必要があることを知りました。CancellationTokenSourceからCancellationTokenを作成して、非同期メソッドに渡していくところまではできました。ただ、ネストが深い非同期メソッド内でトークンをキャンセルしたいときに、どのようにキャンセルすれば良いのか分からない状況です。
非同期メソッドからCancellationTokenSourceのCancelメソッドはどのように呼べば良いのでしょうか。
868:デフォルトの名無しさん (ワッチョイ 665f-bpoS)
23/07/15 12:56:18.34 IVtLjRqQ0.net
【えっ】Perlに未来はあるのか?【終わり?】
869:デフォルトの名無しさん (JP 0H62-9/0y)
23/07/15 13:15:08.16 KExn0jd0H.net
トークンをキャンセルする権限を持ってるのは非同期処理側じゃなくて呼び出し元だと思うんだけど・・・
(だからcancellationTokenSourceを持ってる人だけがCancel()を実行できる)
呼び出し元から指図されたわけじゃないけど自発的にキャンセルしたいってことなら
throw new OperationCanceledException(token)
とでもすればいいんじゃないかな
870:デフォルトの名無しさん (ワッチョイ ca2d-2eqx)
23/07/15 13:42:20.93 m7eEyKEv0.net
それはtokenの状態と整合性取れないし不自然だろう
普通に(キャンセルしたいと判断した)要因に合った例外使えば済む話だ
871:デフォルトの名無しさん (ワッチョイ 95ad-tdBp)
23/07/15 15:05:06.38 x4tryG3A0.net
>>859
>>860
ご回答ありがとうございます。
awaitしている非同期メソッド内で例外を投げて、呼び出し元でcancellationTokenSource.Cancelしてキャンセルする、というのはできました。
ただ、awaitしない非同期メソッド内で例外を投げてもcatchできず、呼び出し元でcancellationTokenSource.Cancelできない状況です。
awaitして、非同期メソッド内で例外を投げて呼び出し元でキャンセルするしかないのでしょうか。
872:デフォルトの名無しさん (ワッチョイ ca2d-2eqx)
23/07/15 16:17:24.24 m7eEyKEv0.net
>>861
awaitしない非同期メソッドのタスクにContinueWith()で後続タスクを作って、その中でキャンセルかな。
後続タスクの実行条件はConinueWith()の引数にTaskContinuationOptionsを指定すれば変更出来る。
(エラーが起きた時のみ実行するとか)
873:デフォルトの名無しさん (スッップ Sd94-XM1G)
23/07/15 17:39:44.49 q/a2phH1d.net
windowsアプリ作る時にform2の幅をコンストラクタ内で指定しても
136未満だと勝手に136に広げられてしまうんだね
知らなくて原因究明するのに時間かかった
874:デフォルトの名無しさん (ワッチョイ 87e5-XQTJ)
23/07/17 11:07:42.07 fKATz6pi0.net
MinimumSizeにそう設定されてるだけでは
875:デフォルトの名無しさん (ワッチョイ ca2d-2eqx)
23/07/17 12:47:25.02 oq1oEUQ30.net
>>863
FormBorderStyleプロパティがNone、ToolWindow系、その他で幅が変わるね。
ToolWindowだとタイトルバーに表示されるボタンの有無でもちょっと変わって、
ControlBox = falseの時が一番小さく出来る。
何故かNoneの時が一番大きくなる。
>>864
MinimumSizeがSize(0,0)でもなる
876:デフォルトの名無しさん (ワッチョイ 3210-2eqx)
23/07/17 21:11:29.34 hjrHtCYP0.net
自作クラスのインスタンス化したときに、
そのインスタンスのプロパティを設定するやりかた? を教えてください。
うまい言い方ができないので、例を示します。
自作クラスで
class Square
{
double width
double height
}
があったとして、
Square square = new Square(){width = 3, height =2}
としたならば、
console.Writeline (square.ToString())
とすると
6
と表示されるようなイメージです。
何がしたいのかというと、 IPropertyChanged を使って、中の
プロパティが変化したときに、square が変わったということを認知したいのです。
877:デフォルトの名無しさん (ワッチョイ 3279-EJzg)
23/07/18 02:03:58.47 BpIlHiPB0.net
Writelineで6を表示したければToStringをoverrideしてやればいいだろうまでは思いましたが
貼られたコードと「何がしたいのかというと」が全く繋がってなくて、恐らくこれは誰も質問を理解できてない状況ではないでしょうか
私の感想としてはIPropertyChangedとやらを使いたければ使えばいいだけの話ではないでしょうか
878:デフォルトの名無しさん (ワッチョイ ca2d-2eqx)
23/07/18 02:28:36.72 GDp0BnYT0.net
例には書いてないけどIPropertyChangedイベントを購読して、イベントが来たらConsole.WriteLine()するんでしょう
で、IPropertyChangedの実装方法が知りたいと
public class Square : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
private void SetProperty< T >( ref T field, T value, [CallerMemberName]string propertyName = null )
{
if ( field.Equals( value ) )
{
return;
}
field = value;
PropertyChanged?.Invoke( this, new PropertyChangedEventArgs( propertyName ) );
}
private double _width;
public double Width
{
set => SetProperty( ref _width, value );
get => _width;
}
private double _height;
public double Height
{
set => SetProperty( ref _height, value );
get => _height;
}
}
879:デフォルトの名無しさん (ワッチョイ 87e5-XQTJ)
23/07/18 08:44:49.63 3b5O2M5n0.net
>>863 >>865
なんか頭の中で136ってもっとおっきいイメージになってた、すまないw
アイコンやコントロールボタンが表示できる最低サイズだったね
面白いことに、FormBorderStyle=Noneの時に
コンストラクタでどんだけ小さいWidth指定しても136になるけど
その後でShown等のフォームが生成された後の時点でWidth指定すると2までは縮まるんだな
SizableとかだとShownでやっても136になるけど
880:デフォルトの名無しさん (スッップ Sd94-XM1G)
23/07/18 10:03:44.12 W6YFjoCEd.net
>>865
>>869
はーやっぱり知識ある人は知ってるんですねー
こういう理屈じゃないところでいちいち悩まないといけないのが大変ですわ
まったく別の話なんですけど、
今これ>>832作ってて面白いこと気づきました
MouseClickイベントって右クリック・左クリック別に処理を分けられないじゃないですか
e.Button == MouseButton.Left とかが使えるMouseDown使えって言われるんですけど
bool isRightClickみたいなフィールドつくって、MouseDownのイベントハンドラで右・左判別して結果をisRightClickに設定
んで、MouseDownイベントの直後にMouseClickイベントも発生するからこいつのハンドラでisRightClickを取得して右・左別に処理わけることができた!
ってこれもみんな普通にやってんのかな・・・自分としては大発見なのだが。
今左右クリックやD&Dで細かい動きを作ってるんでこれは貴重な発見だった
881:デフォルトの名無しさん (スププ Sd94-uP9V)
23/07/18 10:04:51.17 5Ch5Zuv0d.net
>>867
>>868
ありがとうございます
質問のしかたが悪くうまく伝わっていないのですが回答は知りたかったことの一部でもありその部分については理解しました。
public class Hoge :IpropertyChanged
{
public Square square
}
とした時に
squareが値をもっていないことから、methodでsquare.widthの値を変えたとしてもsquareか変化したことを認識できないとの理解です
SquareにIPropertyChangedを噛ませてhogeのpropertyが変わったとする方法もあるのかも知れませんがsquare自身に値を持たせる方法があったら教えて下さい
882:デフォルトの名無しさん (ワッチョイ 87e5-XQTJ)
23/07/18 10:25:56.29 3b5O2M5n0.net
>>870
何のMouseClickイベントのこと?
FormやNotifyIconのMouseClickイベントならe.Button使えるはずだけど
883:デフォルトの名無しさん (スッップ Sd94-XM1G)
23/07/18 11:52:13.49 W6YFjoCEd.net
>>872
今いろいろ確認して、間違えてたことが分かりました
ごめんなさい
複数のラベルをForm上に動的配置したうえで、このラベル全てにクリック系のイベントを追加したんです。
この際、イベントハンドラも自分でコードを書いたのですが、Label_MouseClickイベントハンドラの引数である e の型を、間違えてMouseEventArgsではなくEventArgsとしていたため、e.Buttonが使えなかったというオチでした。
e.Buttonが使えない点を除いて問題なく動いていたので気づきませんでした
ふぅ・・・何やってんだか・・・
884:デフォルトの名無しさん (スッップ Sd94-XM1G)
23/07/18 12:01:06.39 W6YFjoCEd.net
MouseDown使わないといけないのはVBAでした
知識がぐちゃぐちゃになってました
885:デフォルトの名無しさん (ワッチョイ e979-9/0y)
23/07/18 13:43:10.65 hAXktsXG0.net
赤あげて、白あげて、白下げないで、赤下げる♪
左押して、右押して、右離さずに、左離す♪
886:デフォルトの名無しさん (ワッチョイ 73ae-/jfo)
23/07/18 14:42:32.76 INtka+wY0.net
VBAはVB.netに仕様変更する気が無いんだろうな・・・
887:デフォルトの名無しさん (ワッチョイ a6cd-LhHw)
23/07/18 15:08:54.43 ss/yk/UI0.net
vb6言語より環境が古くさすぎて触るきにならん
出力して、vscodeでやって取り込みもあるけどいまいち
888:デフォルトの名無しさん (ワッチョイ 4dc6-l/Dq)
23/07/18 16:00:19.51 zVxGTRP30.net
>>871
細かいけどINotifyPropertyChangedじゃない?
SquareにINotifyPropertyChangedを実装して、
Hogeの方でこういう風に
Square square {
get { return _square; }
set {
if (_square is not null) _square.PropertyChanged -= OnSquareChanged;
this._square = value;
if (value is not null) _square.PropertyChanged += OnSquareChanged;
}
}
void OnSquareChanged(object sender, PropertyChangedArgs e) {
this.OnPropertyChanged(nameof(this.square));
}
889:デフォルトの名無しさん (ラクッペペ MM34-iMTa)
23/07/18 16:06:27.35 vLiOabGzM.net
VBA - VisualBasic
URLリンク(learn.microsoft.com)
Office add-ins - C#
URLリンク(learn.microsoft.com)
Vsto - C#
URLリンク(learn.microsoft.com)
Office Scripts - TypeScript(JavaScript)
URLリンク(learn.microsoft.com)
890:デフォルトの名無しさん (ワッチョイ d010-uD+5)
23/07/18 17:40:37.17 HtITPTeb0.net
871が言ってる値が何のことかよくわからないな
>square自身に値を持たせる方法
891:デフォルトの名無しさん (スップ Sd00-IoCj)
23/07/18 17:59:36.33 uMqw2ex7d.net
まず環境書けとか色々突っ込み所がありすぎて暑いしで萎えた
おまえら頑張れよ
892:デフォルトの名無しさん (ワッチョイ f62f-NBo5)
23/07/18 21:18:14.67 ZtgGANuh0.net
>>871
俺がエスパー回答してやる
Hoge のコンストラクタでsquareをnewする
Square をクラスじゃなくて構造体にする
好きなほうを選べ
893:デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
23/07/18 22:23:27.30 5UWIDgazM.net
お前らも含めてだが…基本的なことを勘違いしてるんだろう
IpropertyChangedが必要なのかも怪しいがそれは置いておく
通常似た様なものがあった場合
面積に相当するAreaプロパティが設定されている
binding対象はHoge.Square.Areaに普通はする
さて、
WidthやHeightが変更になった場合にAreaはその都度変化を通知して欲しいのかどうかも気になる
WidthとHeightを同時に変更したい場合メソッドを使って適切に変更しないとゴミがでるぞ
894:デフォルトの名無しさん (オイコラミネオ MM71-9/0y)
23/07/18 22:33:21.86 5UWIDgazM.net
Squareの値は各種プロパティを持ったオブジェクト自体でありそれを面積とみなすのはおかしいと言うこと
ToString()をoverrideして面積を出すも間違っている
ToString()で出すのは
四角形 幅:3 高さ:4 面積:12
と言う各種情報
895:デフォルトの名無しさん (ワッチョイ 3210-NBo5)
23/07/18 23:28:46.06 HED9e7490.net
>>882
エスパー ありがとうございます。
square を 構造体にかえて 今までやりたかったことが解決しました。
>>883 ,>>884 ありがとうございます。
勉強になりました。
896:デフォルトの名無しさん (ワッチョイ 52da-0QNR)
23/07/19 12:26:43.18 DPJDdup00.net
Func<T, bool>を受け取る引数にPredicate<T>を渡せないのは何故でしょうか?
897:デフォルトの名無しさん (ワッチョイ 4dc6-l/Dq)
23/07/19 13:17:55.70 rfnRytk30.net
型が違うから
class Hoge { public string Piyo; }
class Fuga { public string Piyo; }
と同じメンバを持った2つのクラスがあっても
void Test(Hoge hoge) { ... }
にFugaを渡せないのと同じ
898:デフォルトの名無しさん (ブーイモ MM69-IGBM)
23/07/19 13:33:43.83 Iak4bgJxM.net
hoge(pred.Invoke)で渡せる
899:デフォルトの名無しさん (ワッチョイ 52da-0QNR)
23/07/19 13:52:39.72 DPJDdup00.net
なるほど。
Predicate<T>ってFunc<T, bool>のシンタックスシュガーかと勝手に勘違いしてましたが、完全に別の型ってことですね。
ありがとうございます
900:デフォルトの名無しさん (ワッチョイ ce6e-rP6O)
23/07/20 19:04:03.42 oZtgKOtx0.net
非同期処理について質問です。業務でWPFいじってるんですけど
1 起動画面→2 起動画面表示してる間に重い処理とか色々→3 ログイン画面→4 メイン画面
という流れになっています。それで重い処理の部分がtask runになっていてあぁ非同期処理ってやつかと
なんですがやたら起動画面が長いんです。デバッグしてみるとその重い処理が実行されてるとき他の処理は実行されてなくて
結局普通に1~4が一直線に進んでるだけじゃない?と
自分の理解だと非同期ってその処理をどっか他の場所でやっといてもらってそれ以外は全部通常通りに流れると
この場合だとたとえば3や4のウインドウが出る処理が進んでいってもその裏で重い処理をやってるみたいな
2の部分が短くなるから起動画面も当然短くなるはずだろ……と思ってたんですが
非同期ってそういうもんじゃないんでしょうか
901:デフォルトの名無しさん (ワンミングク MM9b-Q4Hq)
23/07/20 20:07:28.14 4+aEc/KWM.net
ただ固まらないように使ってるだけじゃないの
902:デフォルトの名無しさん (スップ Sd00-m3tO)
23/07/20 20:07:31.46 GDwei+myd.net
2の重い処理でUIスレッドを使っていて、
3ログイン画面でもUIスレッドを使うので、
3のレンダリングが遅延しているのかも
と、先生は仰っている
903:デフォルトの名無しさん (ワッチョイ b6d6-2eqx)
23/07/20 20:29:02.94 etRvguBb0.net
たぶん2の実行中に1が固まらない(アニメーションしたりマウス操作等に反応する)ようにしてるだけだな
2が完了したら3って仕様なんだろ
904:デフォルトの名無しさん (ワッチョイ 56bd-rqn1)
23/07/21 00:30:10.37 3tiQJRjE0.net
その重い処理というのは、ログイン画面やメイン画面までに完了させる必要のない処理なの?
905:デフォルトの名無しさん (オイコラミネオ MM71-rqn1)
23/07/21 01:04:23.20 i7pkSIZ0M.net
普通だろ
2で初期化
それが終わらないとログインすらさせない
当たり前
非同期はいわゆる並列処理ではない
処理してる間にGUIが固まらないようにしてるだけで
906:デフォルトの名無しさん (ワッチョイ 87e5-XQTJ)
23/07/21 08:46:35.27 cgj6JgkV0.net
起動時にまずスプラッシュ画面やら表示して裏で初期化処理ガーッとやってメイン画面が出てくるアプリケーション、ごまんとあるやろ
907:デフォルトの名無しさん (オッペケ Src1-YWw1)
23/07/21 08:48:39.50 EGVnYM7fr.net
非同期処理って偉そうな名前ついてるけどUIが固まらないようにするためだけの存在なんだよな
908:デフォルトの名無しさん (ブーイモ MMba-mCwd)
23/07/21 08:56:24.44 eg4croCbM.net
画面が固まってるかどうかってそんな大事なことか?
909:デフォルトの名無しさん (ワッチョイ fe33-l/Dq)
23/07/21 09:12:44.39 1a+dN6EZ0.net
”応答なし”って表示されるかどうかは一般利用者にとっては大きな違い
910:デフォルトの名無しさん (ラクッペペ MM34-+gOE)
23/07/21 09:46:52.31 OOKalSboM.net
改善したいなら「重い処理」を並列に 分解するぐらいかな?
対して変わらんどころか遅くなるだろうけど
911:デフォルトの名無しさん (ブーイモ MM5e-IGBM)
23/07/21 11:29:51.89 69ts+SDiM.net
業務アプリでログイン画面表示前に終わらせないといけないやたらと時間のかかる重い処理ってどういうの?
ゲームやJavaアプリではあるけどC#で作る業務アプリでは個人的には経験したことないんだけど
ネットワーク経由で自動アップデートを走らせてるとか?
912:デフォルトの名無しさん (ドコグロ MM36-fSYF)
23/07/21 14:42:23.96 6vfbgTUNM.net
DBから必要なデータ落としてくるとかそういうのかな
そこまで大量になるかどうかはものによる
913:デフォルトの名無しさん (スップ Sd00-IoCj)
23/07/21 15:03:06.92 6MAm8yaxd.net
コアモジュールのアップデート確認とか
こういうのを下手にオンデマンド化すると不整合で死者が出たりするんだよ
914:デフォルトの名無しさん (ブーイモ MMba-mCwd)
23/07/21 20:26:40.73 eg4croCbM.net
>>901
そういうのならスプラッシュで長々と起動表示するより
さっさと画面見せてプログレスバー出した方が良くね
端的にいうとエクリプスみたいなのは嫌い
915:デフォルトの名無しさん (ワッチョイ 7f10-UJxk)
23/07/22 06:19:51.07 /NYJ/E/k0.net
プログレスバー出してる間はツールバーやらメニューやら触れないように無効化しとくん?
見せてる意味なくない?
916:デフォルトの名無しさん (ワッチョイ bf79-mRrB)
23/07/22 08:28:55.45 a8PwsTyx0.net
業務アプリで認証前に見せるもんなんて何かあんの逆に
917:デフォルトの名無しさん (ワッチョイ 4742-pcwf)
23/07/22 10:35:33.60 KOXik0Zr0.net
>>906
アプリの生存確認
918:デフォルトの名無しさん (ワッチョイ 27e5-UJxk)
23/07/22 13:04:05.76 UbHj5dt40.net
デスクトップのアイコンダブルクリックしたのになんも画面出て来なかったら
動いてるのか不安になるのがエンドユーザー
919:デフォルトの名無しさん (ブーイモ MM8f-2YhC)
23/07/22 18:21:41.76 k3sQ1muHM.net
そらWEBアプリが流行るわな
とりあえず画面は出てくるしな
920:デフォルトの名無しさん (ワッチョイ 5f2d-rRCM)
23/07/22 18:44:42.22 oc8oPCaK0.net
こじ付け
921:デフォルトの名無しさん (ワッチョイ bf79-mRrB)
23/07/22 18:46:25.02 a8PwsTyx0.net
>>907
今時プログレスバー程度じゃアプリの生存確認にはならないかー
922:デフォルトの名無しさん (ワッチョイ 275f-U6D6)
23/07/22 20:58:38.40 +w7QyAXT0.net
生存w
923:デフォルトの名無しさん (ドコグロ MM9f-0mQ+)
23/07/22 21:08:30.62 hYyrQzz7M.net
WEBアプリでもローディングあるやつあるけどな
924:デフォルトの名無しさん (ワッチョイ 8780-jqln)
23/07/23 00:11:53.57 NsW44b0o0.net
webview2の初期化でぐるぐるさせる
925:デフォルトの名無しさん (ワッチョイ 7f10-UJxk)
23/07/23 06:35:51.66 YwDu7rEL0.net
出てるプログレスバーがなんのプログレスバーか理解できる使用者がどれほど居るか
926:デフォルトの名無しさん (ワッチョイ 7f10-fN/z)
23/07/23 08:35:02.27 E9NR74nn0.net
とりあえず動いとけばいい
927:デフォルトの名無しさん (スッップ Sdff-cTWz)
23/07/23 21:00:26.02 DI++90CVd.net
>>915
何のとか関係ないんだよね>>899に書かれてる通り、
応答なしってなった場合にユーザーがアプリが固まったって思って不安になったり、
人によっては強制終了させたりすることを回避するのが目的でみな実装してると思うよ
928:デフォルトの名無しさん (オイコラミネオ MM3b-nVDU)
23/07/23 23:04:58.70 NQIlbLw0M.net
win11でwindows upadateの元データ読み込みの時間がかかったらタイトルバーで
プログレスバー的なアニメーションが出る
929:デフォルトの名無しさん (ワッチョイ bf79-mRrB)
23/07/24 00:09:50.17 z5rdGXQY0.net
タイトルバーで糞判りづらいアニメーションされてもな
930:デフォルトの名無しさん (ワッチョイ 7f10-UJxk)
23/07/24 06:55:49.96 dpuUxo8K0.net
>>917
プログレスバー出す出さないと応答なしになるかどうかはイコールじゃねぇのよ
931:デフォルトの名無しさん (スッップ Sdff-cTWz)
23/07/24 08:15:20.93 WyKfXWoDd.net
>>920
もともとは>>890から来てる話のつもりだけど
重たい処理を裏で実行させて画面は動いてます(応答なしになってません)ってのを
ユーザーに伝えるためにプログレスバーだしてると思ってるんだが違うのか?
非同期でもなくプログレスバー出して進捗報告してるだけなら言ってる通りかもね
932:デフォルトの名無しさん (ラクッペペ MM8f-La+E)
23/07/24 09:57:36.50 suAy7pRCM.net
10秒ならクルクルカーソルでいい
1分超えるならメッセージぐらい出そう
10分レベルだとプログレス必須
つまり非同期は10分超えのみでいい
933:デフォルトの名無しさん (スッップ Sdff-cTWz)
23/07/24 11:10:30.20 WyKfXWoDd.net
大多数のユーザーが使う画面作ってないのかわからんけど
10秒程度で画面クリックしたら応答なしになるだけで文句いってくるところもあるからね
10分越えで非同期とかはぬるすぎ
まあこの辺までくるとスレチな感じだから言い逃げになるけど自分はここまでにするわ
934:デフォルトの名無しさん (ラクッペペ MM8f-La+E)
23/07/24 11:24:15.27 suAy7pRCM.net
苦情は「起動が遅い」だろ?
「応答するともっと遅くなりますよ」で返せばいい
935:デフォルトの名無しさん (ワッチョイ 4742-pcwf)
23/07/24 11:26:52.53 AUmI6Ec80.net
他にもあると思うが、通信、I/O、DBは無条件で非同期や並行処理を意識して設計しないとな
936:デフォルトの名無しさん (ラクッペペ MM8f-La+E)
23/07/24 11:30:21.52 suAy7pRCM.net
素人はそう考えるけど
待機中のユーザーが他の作業を出来ることは少ない
というか待つだけだろ?
つまり非同期は不要
937:デフォルトの名無しさん (ワッチョイ a779-bG9n)
23/07/24 12:28:09.61 b5WDI80O0.net
5秒だか10秒だか
応答しないとOSにフリーズ判定されるでしょ
938:デフォルトの名無しさん (ワッチョイ 27e5-UJxk)
23/07/24 12:48:04.14 D6WZQL9B0.net
>>926
でもそれアナタの思い込みですよねw
939:デフォルトの名無しさん (ワッチョイ 5f2d-rRCM)
23/07/24 13:26:28.55 X1NMCpf40.net
今時UIが長期間応答しなくなるのは低品質アプリの証
非同期処理が実装しやすいC#では特に
940:デフォルトの名無しさん (ラクッペペ MM8f-La+E)
23/07/24 13:43:25.62 suAy7pRCM.net
ギャラガでもさせるか?
941:デフォルトの名無しさん (ワッチョイ 275f-U6D6)
23/07/24 14:00:15.94 ixDNpyk/0.net
コナミ グラディウス バブルシステム起動画面 - YouTube
URLリンク(youtu.be)
942:デフォルトの名無しさん (ワッチョイ 7f10-UJxk)
23/07/24 22:19:22.23 dpuUxo8K0.net
>>921
なんか盛大に勘違いしてた�
943:A忘れてくれ・・・
944:デフォルトの名無しさん (ワッチョイ cf68-6+wX)
23/07/30 13:16:32.79 qP2cEP2w0.net
>>929
逆に聞きたいけど長時間応答するしかねえって事もあるんじゃないの?
意図的にそうしてるとか
945:デフォルトの名無しさん (ワッチョイ cf68-6+wX)
23/07/30 13:16:34.66 qP2cEP2w0.net
>>929
逆に聞きたいけど長時間応答するしかねえって事もあるんじゃないの?
意図的にそうしてるとか
946:デフォルトの名無しさん (ワッチョイ b742-yh3V)
23/07/30 13:47:13.19 JdhDrtL30.net
手抜きか技術不足以外で長時間無応答を放置する理由はありません
947:デフォルトの名無しさん (ワッチョイ cf68-6+wX)
23/07/30 13:54:56.32 qP2cEP2w0.net
実行中の処理に影響与えないように応答させないのって普通じゃね?
948:デフォルトの名無しさん (ワッチョイ 3ebb-bWks)
23/07/30 14:13:33.41 2ZbxDykr0.net
非同期にするオーバヘッドがないぶん処理が早く終わるしな
949:デフォルトの名無しさん (ラクッペペ MMe6-Fuds)
23/07/30 14:25:18.01 IK2UEk/mM.net
30年前のCPUか?
950:デフォルトの名無しさん (ワッチョイ da2d-cK++)
23/07/30 15:29:45.06 C8zYgP+u0.net
いつの発想だよ…
UIと時間がかかる処理は別スレッドだし
今時のPCならオーバーヘッドは無いに等しいだろ
951:デフォルトの名無しさん (ワッチョイ da2d-cK++)
23/07/30 15:32:39.03 C8zYgP+u0.net
>>936
UIの制御は必要になるけど、それをしないのは手抜きってやつだ
952:デフォルトの名無しさん (ワッチョイ dabd-TJCF)
23/07/30 15:39:50.10 ceI/e8I50.net
>>936
UIがないアプリなら好きにしろ。
UIがあるならUIのお約束を守れ。守れないのは低品質アプリだ。
953:デフォルトの名無しさん (ワッチョイ cf68-6+wX)
23/07/30 16:01:47.86 qP2cEP2w0.net
で応答できないことの何が問題?
954:デフォルトの名無しさん (ワッチョイ 26bc-0TAO)
23/07/30 18:57:09.57 h72pV3U00.net
てゆーか、まだやってたんだ。
ある意味スゲー。
955:デフォルトの名無しさん (ワッチョイ 8f2f-KN61)
23/07/31 02:48:28.98 /pzquaKJ0.net
UIが無応答って状態を勘違いしてる気がする
956:デフォルトの名無しさん (ワッチョイ 73e5-U0W2)
23/07/31 09:07:39.25 kMCzvjpl0.net
まだやってたんだって言うか、1週間近く動きも無く終わったと思われてた話をバカが蒸し返しただけ
957:デフォルトの名無しさん (スフッ Sd8a-kvF/)
23/07/31 13:17:06.46 lng3H2OQd.net
>>942
応答出来ない=次に応答するのが計算が終わったタイミング
と言うことになる
つまり開始後中断したくてUI(例えば停止ボタン)押して
実際に止まるのが計算完了後で
計算結果が表示される直前に終了してくれるオマケ付き
958:デフォルトの名無しさん (スッップ Sd8a-1j9t)
23/07/31 13:19:35.83 xjBtNZZud.net
>>946
>>942みたいな過去の遺物みたいなのにかかわらないほうがいいぞ
「そのうち返ってくるでしょ」みたいな考えのやからは一定数いるからな
959:デフォルトの名無しさん (アウアウウー Sa1f-6+wX)
23/07/31 13:25:23.15 sgBBFIN2a.net
全然ecoじゃない
SDGs連中が飛び付くネタ
960:デフォルトの名無しさん (ワッチョイ becf-WE/L)
23/08/01 01:57:41.21 l/YBSfNu0.net
URLリンク(atmarkit.itmedia.co.jp)
> Windows上で実行されるアプリケーションのウィンドウは、応答がない状態になると、
> ウィンドウタイトルに「(応答なし)」と表示してユーザーに知らせます。
> “応答がない状態”とは、アプリケーションのプロセスが持つウィンドウオブジェクトが
> 「ウィンドウメッセージ(Window Message)」に5秒(既定)以上、応答しなくなる状態を指します。
こんなん出たんですけどとか言われたら恥ずかしいだろ
961:デフォルトの名無しさん (スップ Sd2a-3oaK)
23/08/01 08:39:12.57 NwjOuTDqd.net
そうやってOSが面倒見てくれてるし気にするな
962:デフォルトの名無しさん (ワッチョイ 73e5-U0W2)
23/08/01 08:48:36.38 jZPe7+0n0.net
気にしろし
963:デフォルトの名無しさん (ワッチョイ 0ba7-4FLK)
23/08/01 19:37:01.30 EZnFv0QC0.net
真のエコはシングルスレッド非同期
プログラミングコストは爆増するけどな
964:デフォルトの名無しさん (ワッチョイ 2301-iCAU)
23/08/01 23:34:51.68 MwS5ZIT40.net
魔法の呪文DoEventsでおk
965:デフォルトの名無しさん (ワッチョイ 8f7c-0u9z)
23/08/02 07:43:03.92 MJ0E5XCG0.net
進捗表示、キャンセルや一時停止を受け付けない設計はクソ。
966:デフォルトの名無しさん (ワッチョイ 17ae-CF7t)
23/08/03 10:08:52.15 icL6sh+90.net
シリアルポートからの送信を出来るだけ高速に受信したいのですが、下記以外に何かありますでしょうか?
また高速化する方法がありましたら、指摘してください。
よろしくお願いします。
LinkedList<byte> LLBuffer = new LinkedList<byte>();
SerialPort sp = new SerialPort();
byte[] buf = Encoding.ASCII.GetBytes(sp.ReadExisting());
foreach(byte b in data)
LLBuffer.AddLast(b);
967:デフォルトの名無しさん (ワッチョイ 0ba7-4FLK)
23/08/03 11:06:07.21 L6gOIzTH0.net
>>955
単なる生バイト配列が欲しいんだったらEncoding.ASCII.GetBytes(sp.ReadExisting())は二重に無駄な事してるから
var buf = new byte[1024];
int count = sp.Read(buf, 0, buf.Length);
for (int i = 0; i < count; ++i) LLBuffer.AddLast(buf[i]);
968:デフォルトの名無しさん (ワッチョイ 17ae-CF7t)
23/08/03 11:41:09.07 icL6sh+90.net
>>956
ありがとうございます。
現在は1024バイト固定で受信しているのですが、
sp.ReadBufferSize()で見ているとどんどんシリアルポートのバッファが溜まって頭打ちになっているので、
アプリ側で出来るだけ取得しておきたいと思い、sp.ReadExisting()の使用を検討しているところです。
969:デフォルトの名無しさん (ワッチョイ 0ba7-4FLK)
23/08/03 12:22:33.04 L6gOIzTH0.net
>>957
IOの方が早いなんてことは有り得ないからwhileで回すとかはしてる?
内部バッファが空の時にsp.Read(buf, 0, buf.Length)するとブロックされちゃうのかな
そうじゃないならwhile ((count = sp.Read(buf, 0, buf.Length)) != 0)、
ブロックされるとしてそれが嫌ならsp.BytesToReadで溜まってるバイト数チェックやDataReceivedイベントで拾うとか
970:デフォルトの名無しさん (スッップ Sd2f-YWx9)
23/08/05 10:43:10.90 wvUeqD5zd.net
誰も突っ込まないけどシリアル受信に間に合わないは普通にあり得るくね、
971:デフォルトの名無しさん (ワッチョイ 9b2f-1PqA)
23/08/05 11:08:11.80 6FXtwa520.net
シリアルってだけで実際のスピードもハードスペックもPCの使用状況も書いてないけど
個人的意見なら、いまどきのハードでC#で普通に作って間に合わんなんて、
他に何か原因がなければ想像できんレベルだが
972:デフォルトの名無しさん (ワッチョイ 01c5-i02c)
23/08/05 11:37:11.83 kMOIqdZr0.net
同期9600bps を試しにやってみたまえ。
LANCとかやね
973:デフォルトの名無しさん (ワッチョイ 9949-HLSB)
23/08/05 11:45:14.79 29MU2LyY0.net
.NET7でnlogがあれやこれやしてもうんともすんとも言わないので
おすすめのログのライブラリとかありまふか
974:デフォルトの名無しさん (オイコラミネオ MMc9-1ro1)
23/08/05 14:09:41.96 wQaB7TT9M.net
nugetのランキング上位にあるやつ使えるのでは?
975:デフォルトの名無しさん (ワッチョイ 472d-SCbl)
23/08/05 15:32:52.86 JFXqS/BH0.net
.NET7でNLog普通に使えてるけどなぁ
ちょっと前のバージョン(5.1.4)だからか?
976:デフォルトの名無しさん (ワッチョイ 472d-SCbl)
23/08/05 15:46:07.77 JFXqS/BH0.net
nugetの最新(5.2.2)にしたけど使えてるな
977:デフォルトの名無しさん (オイコラミネオ MMc9-1ro1)
23/08/05 16:15:39.59 wQaB7TT9M.net
.NET7使ってるのが驚き
978:デフォルトの名無しさん (ワッチョイ 4954-4gg4)
23/08/06 21:10:40.86 t8XxdJlt0.net
その程度で驚くヤツはくるみぽんちおの刑だな。
うちの製品なんて、.net framework 1.1 使ってる製品もある。
しかも重要ユーザーからの要望があれば機能追加までしてる。
979:デフォルトの名無しさん (ワッチョイ b310-jhPE)
23/08/07 07:41:51.88 NZgbVHgQ0.net
XPで動かしてそう
980:デフォルトの名無しさん (ワッチョイ 7be5-uQHI)
23/08/07 09:07:25.45 TF3XFQ9V0.net
OSにしてもランタイムにしても、古いのずっと生き残ってるのあるあるだよな
うちの顧客なんてVB6製アプリをXPで動かしてるとこまだあるしな……
981:デフォルトの名無しさん (ワッチョイ 7be5-uQHI)
23/08/07 09:08:05.81 TF3XFQ9V0.net
流石にNT4はもう居なくなったけど
982:デフォルトの名無しさん (ワッチョイ eb42-tyL0)
23/08/07 09:17:47.25 82JZu0tI0.net
ニューテクノロジ4か
名前にニューって付けて年月経つと碌なことにならないな
983:デフォルトの名無しさん (アウアウウー Sa9d-mBaV)
23/08/07 10:03:51.30 wl/Lx6N5a.net
うめようず
984:962 (ワッチョイ 9949-c/5M)
23/08/07 10:41:55.42 NRD23MMX0.net
NLog動くようになった!
コードで設定すると動く、でもConfigは反映されないからと色々やってたら
「出力ディレクトリをコピー」
「ビルドアクション」
を設定してないことに気づいた
C#(てかVS)久しぶりすぎて各ファイルにあるプロパティの存在を忘れてたw
985:デフォルトの名無しさん (スッププ Sd03-XWNR)
23/08/07 14:14:56.57 MBhkVnR+d.net
ふぅ・・・例外握りつぶしてたぜ・・やっと不具合原因のとっかかり見つけた
986:デフォルトの名無しさん (アウアウクッ MMf3-uQHI)
23/08/07 15:03:38.79 A9F8fN0gM.net
byte high = 0xff;;
bool flag = (high & 0b10000000) != 0;
これをもっとC#っぽくできないの?
987:デフォルトの名無しさん (ワッチョイ 472d-SCbl)
23/08/07 15:16:30.47 gOyFWeUo0.net
>>975
フラグをenum定義したら
[Flags]
enum Hoge : byte
{
Flag0 = 1 << 0,
Flag1 = 1 << 1,
...
Flag7 = 1 << 7,
}
var high = ( Hoge )0xff;
high.HasFlag( Hoge.Flag7 );
988:デフォルトの名無しさん (ワッチョイ c379-IXit)
23/08/07 23:19:46.08 4jmmvhVW0.net
enumに属性がなんか気持ち悪いし…使用時にキャストしてるのもなんだかな
#defineが無い弊害がこういうとこで出るのか
C/C++のビット演算はイディオムで綺麗に書けるのにな
989:デフォルトの名無しさん (ワッチョイ 1bd6-SCbl)
23/08/07 23:34:33.91 gDjmIGTi0.net
キャストが嫌なら、複数のフラグをORで連結すれば
990:デフォルトの名無しさん (ワッチョイ 1bd6-SCbl)
23/08/07 23:44:21.58 gDjmIGTi0.net
途中で書き込んじゃった
enumに↓を追加
All = Flag0 | Flag1 | Flag2 | Flag3 | Flag4 | Flag5 | Flag6 | Flag7,
var high = Hoge.All;
991:デフォルトの名無しさん (ワッチョイ 7be5-uQHI)
23/08/08 08:54:05.88 aeM2XQJJ0.net
個人的には、Flagsよりも定義でビットシフトしてるんがなんか嫌だなw
>>975でも十分C#っぽい気はするけどねぇ
C/C++でif(high & 0x80)で済むのはBOOLの実体が数値だからで
C#のboolは別物だからしょうがないし
992:デフォルトの名無しさん (ワッチョイ 7be5-uQHI)
23/08/08 09:22:12.70 aeM2XQJJ0.net
次スレ
ふらっと C#,C♯,C#(初心者用) Part159
スレリンク(tech板)
993:デフォルトの名無しさん (アウアウクッ MMf3-uQHI)
23/08/09 09:18:17.06 tGujvv4CM.net
このままでいい気がしてきた
994:デフォルトの名無しさん (ワッチョイ 095f-SCbl)
23/08/10 00:40:12.02 P/TzKPwA0.net
>>980
ビットシフトで定義するかは好みと慣れだな
C言語でも見かけるし
一応、何ビット目かソース上ではっきりするってメリットがある
995:デフォルトの名無しさん (ワッチョイ b310-uQHI)
23/08/10 07:11:54.17 ao9yBEOh0.net
何ビット目かって表現なら、それこそ>>975の方がC#では普通になったんじゃない?
996:デフォルトの名無しさん (ワッチョイ 2b6e-D1BR)
23/08/11 16:58:32.91 JGKsK+J90.net
ラムダ式ってこうちょろちょろっとした処理を書くのに使うものであってでかい処理は関数定義するのが基本って認識だったんですけど間違ってますかね
もう今のプロジェクトラムダ式渡すところで数十行の関数がガンガン出てきてて
デバッグしにくいわかりにくいでげんなりしています。まぁこれに限らずそもそも表に出る機能単位でしか考えてないのか関数抽出するって考え方があんま無いみたいな現場なんですが……
997:デフォルトの名無しさん (オイコラミネオ MMc9-uQHI)
23/08/11 18:07:32.18 CXONK6kXM.net
>>985
どうとでもいえるけど基本的にはその使い方は特に間違ってはいないので認識が間違っていると思う
処理の委譲目的ならそれが普通かも
関数抽出しやすいなら関数を抽出する
ローカル変数などに依存度が高いならそのまんま書いたほうがいい
設計がしっかりしてクラスを作ってそれを渡しあってるとかなら別だけどそんなことしてられないと思う
998:デフォルトの名無しさん (ワッチョイ c379-IXit)
23/08/11 18:39:03.98 I7dwFhkG0.net
デバッグしたいなら1処理ずつ分けて書き直しゃいいだろ
C#のlambdaはdelegateの意味も暗黙に含んでるからそのものは削らない方がいいけど
999:デフォルトの名無しさん (ワッチョイ b310-uQHI)
23/08/11 20:58:53.23 0dzc0r6z0.net
同じ処理を他でも使うならメソッド化した方がいいと思うけど、そこでしかやらないならラムダでかまわんと思うけどな
今やローカル関数なんてのもあるし
1000:デフォルトの名無しさん (ワッチョイ 395f-17EC)
23/08/19 20:49:54.56 UW3EkLqg0.net
closedxmlでセルに書き込み反映されない…なんで😭
1001:デフォルトの名無しさん (アウアウエー Sa23-NwC7)
23/08/20 02:06:38.74 RsoPGDy3a.net
jsonのテキストをデコードできる関数ないかな?
htmlでいうところのHttpUtility.HtmlDecode()のjson文字列版
「https:\u002F\u002Fwww」を「URLリンク(www)」に変換したい
そんなの自作しろと言われたらそれまでだけど、あるならあるの使いたいので
1002:デフォルトの名無しさん (アウアウエー Sa23-NwC7)
23/08/20 04:06:30.93 RsoPGDy3a.net
Regex.Unescape()でいけるのかな
1003:デフォルトの名無しさん (ワッチョイ 2b10-YAjS)
23/08/20 08:33:15.17 OGvFjvg+0.net
ちょっと前にTwitterのデータ取得して遊んでた時はRegex.Unescapeでやってたけど
1004:デフォルトの名無しさん (ワッチョイ db79-wKkg)
23/08/20 18:10:25.72 Jez4Fpf50.net
そこで普通にjsonパーサ使おうと思わないの何でなん
1005:デフォルトの名無しさん (ワッチョイ 2b10-YAjS)
23/08/20 18:37:23.62 OGvFjvg+0.net
JsonNode.Parseでゲットした配列から取り出した文字列をRegex.Unescapeにかけたんだけどね
1006:デフォルトの名無しさん (アウアウエー Sa23-NwC7)
23/08/20 19:12:02.03 RsoPGDy3a.net
jsonがあるわけじゃなかったから
適当なclass用意して文字列をjsonの書式にフォーマットしてパースして取り出すって流れは気分的にやりたくなかった
1007:デフォルトの名無しさん (ワッチョイ c9c6-H9aa)
23/08/20 20:06:30.57 YUyQ4ipW0.net
"hoge"だけみたいな文字列も整形式のJSONだよ
JsonSerializer.Deserialize<string>("\"hoge\"");
生の文字列なら前後に二重引用符付ける必要はあるだろうけど
1008:デフォルトの名無しさん (アウアウエー Sa23-NwC7)
23/08/20 21:07:24.34 RsoPGDy3a.net
試したら動いた。stringクラス指定だけでできたのか。それは知らなかった
1009:デフォルトの名無しさん (ワッチョイ 93e5-YAjS)
23/08/21 08:03:28.38 Ndtw0dBa0.net
うめか
1010:デフォルトの名無しさん (ワッチョイ 395f-4N9b)
23/08/21 14:43:41.77 s1KrJzLF0.net
質問いいですか?
1011:デフォルトの名無しさん
23/09/10 08:25:05.15 MWuSGE3eL
世界最悪の殺人組織公明党強盗殺人の首魁斉藤鉄夫らテロリス├に乗っ取られた国土破壊省に天下り賄賂癒着しながら莫大な温室効果ガスに
騒音にコロナにとまき散らして気候変動させて日本どころか世界中で土砂崩れに洪水、暴風、猛暑、干ばつ、森林火災にと災害連発させて
大量虐殺してエネ価格に物価にと暴騰させて住民の生活を破壊して私腹を肥やしてるクソ公務員個人に徹底報復しよう!
東京都港区赤坂2-17-10がクソ議員宿舎なのは有名だが「省庁別宿舎 ─覧表」で検索すれば全国の公務員宿舎の位置が容易に確認て゛きるのて゛
拡声器や、騒音バヰクで乗り付けてブァンブアンやりに出向いてやろう!もちろんカによる一方的な現状変更によって都心まで数珠つなぎで
クソ航空機飛ばして閑静な住宅地だろうと航空騒音まみれにして生活に仕事にと公然と妨害してるこいつら利権害虫のことだから騒音なんて
どうということはないんだろうし、航空騒音に比べれば屁みたいな騷音しか出せないだろうが.遠慮なく大騒音まき散らしに出向いてやろう!
政府という傘で好き放題やってる公務員には個人攻撃が有効!図書館やらて゛ブァンブアンやって税金泥棒利権を徹底的に壊滅させるのも正義!
(羽田)ttΡs://www.call4.jP/info.Ρhρ?type=iТems&id=I0000062 , tΤps://haneda-Project.jimdofree.com/
(成田)ttps://n-souonhigaisosyoudan.amebaownd.com/
(テロ組織)tURLリンク(i.imgur.com)/hnli1ga.jpеg
1012:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています