X



ふらっと C#,C♯,C#(初心者用) Part141
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん (ワッチョイ 2317-qMUn)
垢版 |
2018/12/15(土) 11:07:07.89ID:0aSEF/I+0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1538646998/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0868デフォルトの名無しさん (ワッチョイ 7ff2-yQ/S)
垢版 |
2019/02/20(水) 01:09:59.10ID:WG18KXuW0
助けて!!
Parallel.Forを使ってそれぞれで別の演算アプリを起動して
4スレッドで演算処理してるんだけど
アプリ強制終了してもスレッド(演算アプリ)はずっと処理し続けてるの!お願い止まって!!

親スレッド(UIスレッド)が死んだら子スレッドも死ぬみたいなお作法ありますか?
演算アプリはSystem.Diagnostics.Process使って起動してます
0870デフォルトの名無しさん (スプッッ Sdff-lPFl)
垢版 |
2019/02/20(水) 02:03:55.40ID:/GvzZ744d
>>868
それはC#的にスレッドとは言わない。
別プロセスだ
0873デフォルトの名無しさん (アウアウエー Sa1f-cT+3)
垢版 |
2019/02/20(水) 16:01:28.63ID:qtZmd9yJa
form1にsplit container をverticalで貼り付けて左右に2分割してその中にボタンとかコンポーネントいろいろ置いてて、
あとから上にmenu stlipを追加したくなってツールボックスからmenu stripコンポーネントをドラッグ&ドロップすると
splitcontanerのpanel1かpanel2のどっちかにしか貼り付けられないのだけどform1にmenuStripを表示するようにするにはどう操作すればいいのでしょうか
0880デフォルトの名無しさん (ワッチョイ 66f2-i3+Z)
垢版 |
2019/02/21(木) 13:02:04.01ID:A65FK9eD0
>>879
それもあるよ!今はキャンセル機能ないから強制終了させて
この問題発せしたんよ
ちなみに強制終了の場合はなんか手法ある?
別プロセスもタスクマネージャーで落とすしかない?
0882デフォルトの名無しさん (ワッチョイ b501-4fA7)
垢版 |
2019/02/21(木) 16:20:57.98ID:+4fiWh+W0
すみません、コルーチンの使い方について教えてください。
例えばRPGなどのゲームで、キャラクターAに話しかけると、数秒待って反応が返ってくるという処理をしたいと思っています。

まず、数秒待つというコルーチンを作り
private IEnumerator waitforsecond(float sec) {
yield return new WaitForSeconds(sec);
}

次にAに話しかけた時の処理を作りました。

public void Sample(){
 //50%の確率で無視される
 if(Probability.DetectFromPercent(50)){
MainText.text = “Aに話しかけてみた・・・”;
StartCoroutine(waitforsecond(2));
 MainText.text = "なんとAから無視された!”;
 
 //50%の確率で殴られる
  }else {
MainText.text = “Aに話しかけてみた・・・”;
StartCoroutine(waitforsecond(2));
MainText.text = "なんとAから蹴られた!”;
0883デフォルトの名無しさん (ワッチョイ b501-4fA7)
垢版 |
2019/02/21(木) 16:24:21.78ID:+4fiWh+W0
これで、話しかけたあと2秒時待機して反応がある、という処理になるかと思ったのですが、うまく行きません。

あと登場キャラクターもA、B、C‥‥とたくさんいるのであれば、話しかけると数秒待って反応するという関数を作ってあげたほうがスッキリするのでしょうが、やり方がイマイチわかりません。
0889デフォルトの名無しさん (ワッチョイ 667b-SpKW)
垢版 |
2019/02/21(木) 20:11:16.75ID:969mh7640
俺もあいまいな理解だから偉そうには言えないけど
>>882
ここのサンプルが分かりやすいかも
http://developer.wonderpla.net/entry/blog/engineer/Unity_Co-routine/
>>885
private IEnumerator waitforsecond(float sec) とpublic void Sample()が非同期(違う時間軸での動作)になるので待ち時間になっていない
>>887の言う通り待ち時間には他の物を使わないと
0893デフォルトの名無しさん (アウアウエー Sa52-SfL3)
垢版 |
2019/02/21(木) 23:22:50.38ID:5v/pkJgQa
>>892
これ書いてて一つ疑問に思ったのが、
MessagingTask = MessagingTask.ContinueWith(t => job.Action());
これを以下のように、
MessagingTask.ContinueWith(t => job.Action());
こう変えると期待した動きにならない。
ContinueWithってキューになってて先に入ってるタスクの完了を待って次を実行すると思ったけど違うのか
0898デフォルトの名無しさん (アウアウエー Sa52-dS/9)
垢版 |
2019/02/23(土) 14:44:05.16ID:3cOSTboLa
MenuStripコンポーネントでItemを選択した時にその左にチェックを入れるようにしてるのだけど
選択した時点でメニュー閉じちゃって若干不便なのだけど
ひらいたままにする設定にはできないのでしょうか
0899デフォルトの名無しさん (アウアウエー Sa52-SfL3)
垢版 |
2019/02/23(土) 19:07:18.92ID:gzY/wSmba
>>898
ルートのアイテムの直下ならClickか何かで親のShowDropDown()を呼べば一応実現できるっぽい。
入れ子になってる場合は、

....

ToolStripMenuItem1.Click += (sender, e) =>
{
  RecursiveShowDropDown(((ToolStripMenuItem)sender));
};

....

void RecursiveShowDropDown(ToolStripMenuItem item)
{
  if (item == null) return;
  var parent = item.OwnerItem as ToolStripMenuItem;
  RecursiveShowDropDown(parent);
  parent?.ShowDropDown();
}

たぶんこれでいける。
でもエンターキーでクリックした場合の操作性に問題が残るけど
0900デフォルトの名無しさん (アウアウエー Sa52-SfL3)
垢版 |
2019/02/23(土) 19:24:23.57ID:gzY/wSmba
こっちの方がいいか
EventHandler eh = (sender, e) =>
{
  Action<ToolStripMenuItem> a = null;
  a = item =>
  {
    if (item == null) return;
    var parent = item.OwnerItem as ToolStripMenuItem;
    a(parent);
    parent?.ShowDropDown();
  };
  a((ToolStripMenuItem)sender);
};
ToolStripMenuItem1.Click += eh;
0902デフォルトの名無しさん (ワッチョイ ada2-uPuZ)
垢版 |
2019/02/24(日) 11:47:42.69ID:L3+XvQB40
質問です
現在、以下のように一つの非同期処理(時間のかかるディスクの書き込み)
を実行しています。

private async void button1_Click(object sender, EventArgs e)
{
 await DoSomethingAsync();
 MessageBox.Show("完了");
}

これを実行中にUIを操作して、次の処理の準備ができたら(実行する内容はDoSomethingAsync)
button1を押して予約し、実行中の処理が終わったら引き続き実行させたいです。(並列ではなく)
また、「完了」は登録されたタスクが全て終わったときに出したいです。
どのように書くのが一般的なのでしょうか?


初回実行時にすべての実行すべきタスクがわかっている場合は
そのタスクのリストを作ってWhenAllする みたいなのはググったら出てきたんですが

ContinueWithを使うのかなと思ったのですが、書き方がわかりませんでした
0904デフォルトの名無しさん (ドコグロ MM15-bAbS)
垢版 |
2019/02/24(日) 12:36:22.83ID:cR8EPyISM
>>902
最後に追加したTaskを覚えておいてContinueWithで繋ぐとかできなくはないけど、
そんな変なハックをするくらいなら素直に別スレッド立てて順番にバックグラウンド実行したほうがいい
Producer-Consumerでググれ
0905デフォルトの名無しさん (ワッチョイ 9eef-upo5)
垢版 |
2019/02/25(月) 11:09:41.10ID:a5srEHrc0
c#のフォームで、タイルマップエディタのようなものを作りたいのですが、どのような情報を調べたらいいでしょうか
また、そのような目的に適したフォームはありますか?

そもそもC#が適切なのかわからないのですが
0907デフォルトの名無しさん (ワッチョイ 7d01-b+8Y)
垢版 |
2019/02/25(月) 12:13:30.45ID:kHS+5sOB0
VisualStudioでデバッグ実行した時だけプログラムがフリーズしてしまうのですがこういう時はどういった原因が考えられるでしょうか?
WinFormを使用していてフォームが立ち上がったらバックグラウンドで色々するって感じの処理なのでどこかでUIスレッドをブロックしているのかとも思いましたがConfigureAwait(false)の設定し忘れは無さそうでした
VisualStudioを通さずに直接実行した場合は正常に動作しています
0910デフォルトの名無しさん (ファミワイ FFc9-kEY9)
垢版 |
2019/02/25(月) 15:41:31.91ID:stIKiSPsF
最前面じゃなくて後ろ面にアクティブウィンドウがポップアップされてるんじゃね
0911デフォルトの名無しさん (アウアウエー Sa52-SfL3)
垢版 |
2019/02/25(月) 19:11:52.07ID:ERkCIkZda
>>902
単純にボタンをクリックした回数だけ非同期メソッドを実行したいだけなら
これでいいような気が

private bool mBusy = false;
private int mRepeatCount = 0;

private async void button1_Click(object sender, EventArgs e)
{
  mRepeatCount += 1;
  if (mBusy) return;
  mBusy = true;
  for (int i = 0; i < mRepeatCount; i++)
    await DoSomethingAsync();
  mBusy = false; mRepeatCount = 0;
  MessageBox.Show("全部終わった");
}
0915デフォルトの名無しさん (ワッチョイ 9eef-upo5)
垢版 |
2019/02/26(火) 07:34:07.95ID:hTJo4mxi0
↑ありがとうございます
.NET Core Launch (console)
というデバッガを使っているので、
"program": "${workspaceFolder}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll",
という部分を修正するのだと思いますが、どう修正するんでしょうか?
実行したいプログラムを{workspaceFolder}/Program.csと指定してもエラーになります
0923デフォルトの名無しさん (ワッチョイ b67c-cX2z)
垢版 |
2019/02/26(火) 10:57:10.09ID:s7Q5fSFO0
>>919
とりあえずエクスプローラなりコンソールなりvscodeとは別に開いて
プロジェクトフォルダのbinフォルダの配下を確認
どこかにビルド結果のdllが作られてるから

うちはいつの間にかPlatformって環境変数が定義されてたせいで
HPDとかいうフォルダが1個挟まってたぞ
0930デフォルトの名無しさん (ワッチョイ 9fad-SKB1)
垢版 |
2019/02/28(木) 00:37:24.74ID:weUa1N+o0
setterメソッドで文字列が8文字以下ならname変数に引数を代入する文を書きたいんですけど
どのように書けばいいんでしょうか?
0932デフォルトの名無しさん (ワッチョイ d7e7-CeLW)
垢版 |
2019/02/28(木) 00:55:51.76ID:ucEMLrR20
セッターよりもプロパティで良い気がする

private string name;
public string Name
{
 set
 {
  if ( value.Length <= 8 )
  {
   this.name = value;
  }
 }

 get
 {
  return this.name;
 }
}
0936デフォルトの名無しさん (ワッチョイ 37e5-i/5X)
垢版 |
2019/02/28(木) 19:23:03.02ID:owSMuOWF0
Windows.Forms の質問です。
TextBox 数個と MenuStrip に サブメニューのない MenuItem を追加したFormで
Altキーでメニューを選択すると、
カーソルキーの上下でTextBoxのフォーカスが移動するのですが
どういった理由でしょうか?
0938936 (ラクッペ MMcb-hSmr)
垢版 |
2019/02/28(木) 20:50:40.99ID:DAgKUWMjM
うーん
ショートカットキーの設定ができるので
ツールバーの代わりに使おうと思ったんですが
予想外のキモい動きで躊躇してます
0942デフォルトの名無しさん (ワッチョイ bfef-Q9lp)
垢版 |
2019/03/01(金) 21:07:24.70ID:tVNocw1h0
サイドバーについてなんですが、例えばgimpというソフトがあるのですが、両サイドにツールやレイヤーが表示されています
このように領域を分けるコントロールを教えてください
win form c#です

これはもう1つフォームを追加してるんでしょうか?
0943デフォルトの名無しさん (ワッチョイ ff7b-IHXa)
垢版 |
2019/03/01(金) 21:59:18.22ID:ORsij5/P0
>>942
フォームの枠の中に配置・移動させるのならVisual Studioでデザイナ画面+ツールボックスの「コンテナー」のカテゴリの好きなものを
フォームの枠の外やはみ出して使いたいものには別のフォームを割り当て、というのが基本じゃないかな
GimpはCだからどうやっているかは知らないけど
0946デフォルトの名無しさん (アウウィフ FF9b-vuRV)
垢版 |
2019/03/02(土) 11:00:56.30ID:+L4gK20KF
>>940
超初心者か池沼向け

普通の人はwebで充分
0947デフォルトの名無しさん (アウウィフ FF9b-vuRV)
垢版 |
2019/03/02(土) 11:02:23.80ID:+L4gK20KF
GTKは糞
0955デフォルトの名無しさん (ワッチョイ d72d-SKB1)
垢版 |
2019/03/02(土) 23:01:13.05ID:XIaahVa70
学習のために、確保した変数がスタックかヒープかどっちにあるのか知りたいんだけどさあ
簡単にチェックする手段ってないんかな?
レス数が950を超えています。1000を超えると書き込みができなくなります。