16/11/19 02:31:43.92 E+HZm7+A0.net
public class clsToggleButton : CheckBox
{
Form _pform;
public clsToggleButton(Form frm)
{
_pform = frm;
}
public void OnPaint (PaintEventArgs pevent)
{
//ここにトグルボタンを描く
if( this.Checked == false ){
//どこに描くんだろ?
}else{
}
}
}
604:デフォルトの名無しさん (ワッチョイ 5e7d-XpIe)
16/11/19 02:41:43.15 wlTmYqF50.net
追加→新しい項目→カスタムコントロール
で、追加されたコードのControlの部分をCheckBoxに。
OnPaintの所は、例えば↓みたいすれば、クリックするたびに赤と青が入れ替わる
protected override void OnPaint(PaintEventArgs pe)
{
using (var brush = new SolidBrush(Checked? Color.Red : Color.Blue))
{
pe.Graphics.FillRectangle(brush, ClientRectangle);
}
}
一度ビルドすると、ツールボックスに載るのでドラッグ&ドロップでフォームに配置できる
605:デフォルトの名無しさん (スププ Sdb8-RUi6)
16/11/19 02:54:11.98 aIswJeomd.net
>>593
一切欠落してなくない?
Checkboxを継承したコントロールだから、クラスで、コンポーネントで、ユーザコントロールだけど、そんな瑣末な話は置いといて、
とりあえず、OnPaintをオーバーライドして、graphicsにthis.checked描画してみたら?
606:デフォルトの名無しさん (ワッチョイ 5e41-mj3c)
16/11/19 04:05:39.65 N2eyluxh0.net
どうしてもタメになる書籍はC++をサンプルに使われてることが
多いから調べてはいるけど
C#に慣れちゃってるとまーキモチワルい
確かにこれが出来ればほとんど何でも出来るんだろうけど・・・
とりあえずC++最高ということで
607:デフォルトの名無しさん (ワッチョイ 5e41-mj3c)
16/11/19 04:38:58.99 N2eyluxh0.net
ちげぇ!
C#最高!です
なんとか基本的なことは出来るようになった希ガス
疲れたよ、もう
608:デフォルトの名無しさん (ワッチョイ 9fcf-RAPI)
16/11/19 06:23:34.01 S6bRHJ270.net
600げと
609:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/19 06:31:51.33 E+HZm7+A0.net
>Checkboxを継承したコントロールだから、クラスで、コンポーネントで、ユーザ
>コントロールだけど、そんな瑣末な話は置いといて、
うろ覚えの初心者には全然些末じゃないy。 無茶苦茶大事!!!
「Checkboxを継承したコントロール」ここにたどり着くのに一晩かかる。
ユーザコントロール is a コンポーネント
コンポーネント is a クラス
こういう関係なの? おお、初めて知った。
トグルボタン は ユーザーコントロールとして作るってことだね。納得。
でも空クラスを配置してCheckboxを継承してもおんなじことだよね。
何が違うの?
610:デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)
16/11/19 06:56:43.78 E+HZm7+A0.net
>596
この説明は完璧って感じがする。
これからでかけるのでチェックできない残念。
611:デフォルトの名無しさん (ワッチョイ 9c7b-wMId)
16/11/19 08:53:15.23 gGKRRZRa0.net
>>601
各種コントロールの説明や、継承チェーンを見れば?
自分が作りたいコントロールに近いものを探して使うか、
そこから継承して派生したコントロールを作ればいい
クラスを使う時は、継承チェーンをさかのぼりながら、
ベースクラスにどういう機能があるか調べる
なぜなら派生クラスは、ベースクラスのすべての機能を持っているから
612:デフォルトの名無しさん (ワッチョイ 3f49-YqEk)
16/11/19 12:30:26.20 xW+PNGAl0.net
>>598
STLなんかは後付けで今風な機能を実装しようとしてて、無理やり感が半端ない。
613:デフォルトの名無しさん (スププ Sdb8-RUi6)
16/11/19 13:12:50.96 aIswJeomd.net
>>601
同じ事だよ。
ユーザコントロール一度画面から選ぶと、似たようなコード出て来るから、
そいつの継承元見てみ。
>>596は親切だな。
614:デフォルトの名無しさん (ワッチョイ 9c7b-wMId)
16/11/19 18:51:47.20 gGKRRZRa0.net
よく知らんけど普通、IDEにはクラスウィザードが付いている
新しいクラスを作るときは、クラスウィザードの画面で作れば、自動的にクラスが作られる
615:デフォルトの名無しさん (アウアウオー Sa36-MfQN)
16/11/19 19:01:01.87 VKIYWaqIa.net
そんな使ってる人ほとんどいないと思うよw
ところで前から思うんだけどウィザードってのはポリコレ的にどうなのかね
616:デフォルトの名無しさん (ワッチョイ 3a20-XpIe)
16/11/20 19:20:37.60 DP6jtmXB0.net
ハードディスクのベンチマークを測る
簡易ツールを作りたくて
ランダムリード・ライトのサンプルを見つけたのですが
これでハードディスクへのランダムリード・ライトになるでしょうか?
//ランダム書き込み
using (System.IO.BinaryWriter rw = new System.IO.BinaryWriter(
File.OpenWrite(@"C:\temp\test.txt"), System.Text.Encoding.UTF8))
rw.Write("0");
//ランダム読み込み
using (System.IO.FileStream file = new FileStream(@"C:\temp\test.txt",
System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
byte[] bs = new byte[file.Length];
file.Read(bs, 0, bs.Length);
}
617:デフォルトの名無しさん (ブーイモ MMb8-RUi6)
16/11/20 19:28:04.56 aSeFXcOvM.net
ファイル名が違うな ¥¥.¥PhysicalDriveN だよ
618:デフォルトの名無しさん (ワッチョイ 777b-w7k2)
16/11/20 20:25:05.70 JNgwCyth0.net
ディスク書き込みは複数層でバッファリングがあるから
.NETのライブラリだけじゃ割と無理じゃないかな
619:デフォルトの名無しさん (ワッチョイ 3a20-XpIe)
16/11/20 20:32:04.76 DP6jtmXB0.net
\\.\PhysicalDriveN
なんてドライブの指定方法があるのですね
ただ、MBRを迂闊に書き換えると
クラッシュするとか
単純な読み書きは危険なようで
だから、公開されてるベンチツールには
シーケンシャルの読み書きしかないのかと思いました
情報ありがとうございます
620:デフォルトの名無しさん (ワッチョイ fa73-XpIe)
16/11/20 22:44:41.11 ujJmR5b00.net
BindingSource のデータをLINQで扱いたいのですが
↓コードのbs に登録されているデータをLINQを使って
ID=100とID=200 のKamokuの平均値をだしたいのですがどんな風にやればいいでしょうか?
private List<Employee> emplist;
BindingSource bs = new BindingSource(emplist, string.Empty);
dataGridView1.DataSource = bs;
621:デフォルトの名無しさん (ワッチョイ 777b-w7k2)
16/11/20 23:11:49.40 JNgwCyth0.net
DataSourceがList<T>ならBindingSourceでフィルタできるわけでも無し
emplistにWhereとAverageするだけじゃね
Whereで要素数0になる可能性があるとちょっと面倒だけど
622:デフォルトの名無しさん (ワッチョイ fa73-XpIe)
16/11/20 23:36:14.07 ujJmR5b00.net
>>613
DataTable でLINQ使うときは、↓のように var items = dt.AsEnumerable() でやれるのですが
>>612のようにやるときは、bs.AsEnumerable() みたいにはできないのですか?
DataTable dt;
var items = dt.AsEnumerable()
.Where(x => x["id"] == "100")
.Select(x => x["Koumoku"].ToString());
623:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/20 23:45:11.80 mNZMIvsS0.net
BindingSourceは一応IEnumerableを実装してるから
bs.Cast<Employee>().Where(…とできるんじゃないの
試したことないしそんなことしようとも思わないけど
624:デフォルトの名無しさん (ワッチョイ fa73-XpIe)
16/11/20 23:51:53.85 ujJmR5b00.net
>>615
ありがとう試してみます。
625:デフォルトの名無しさん (ワッチョイ 3f49-YqEk)
16/11/21 02:19:09.69 iKiRpZRf0.net
>>611
>>610の言う通り、c#のStreamキャッシュとOSのファイルキャッシュがあるから、C#標準のライブラリだけじゃ実現できないよ。
P/InvokeでCreateFile()やWriteFile()/ReadFile()等のWIN32APIを呼び出す必要がある。
OSのファイルキャッシュは、CreateFile()でオープンする時にFILE_FLAG_NO_BUFFERINGを指定すれば無効にできる。
HDDに直接書き込みたいなら、ロックとアンマウントも必要になるんじゃないかな。
(DeviceIoControl()でFSCTL_LOCK_VOLUMEとFSCTL_DISMOUNT_VOLUME)
626:デフォルトの名無しさん (ワッチョイ 159a-2Ppy)
16/11/21 05:14:56.16 6eO9t+4E0.net
>>490-491
C#側でデリゲート型を定義して、起動時にコールバック関数のデリゲートをDLLに渡し、
DLL側では関数ポインタとして受け取ることで、C#側の関数をC側から適宜呼び出すことが
できました。C#側はunsafeを使ってないマネージコードなのに、Cから関数ポインタの形で
呼び出すことができるんですね、ちょっと驚きました。有り難うございました。
そこでもう一つ疑問が出てきたんですが、DllImportしたDLLがprintfした内容(標準出力)を、
WPFアプリやFormアプリで受け取って特定のコントロールに出力したり、GUIとは別に
コンソールウィンドウを出してそちらに表示するようなことはできるんでしょうか。
627:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/21 07:15:54.06 EumYM2T30.net
SetStdHandleとかでできるんじゃないの
素直に子プロセス作ってリダイレクトした方が簡単確実だけど
628:デフォルトの名無しさん (ワッチョイ fa23-tQqt)
16/11/21 08:51:20.53 hLpmxTjl0.net
int25とかint26思い出したわ
629:デフォルトの名無しさん (ワッチョイ fa73-XpIe)
16/11/21 20:26:47.04 7M/YTSBB0.net
LINQで質問ですが
class Person
{
public string id { get; set; }
public DateTime Dateday{ get; set; }
public int kamoku { get; set; }
}
var items = (from tesA in bs.Cast<Person>()
where tesA.id == 100
select tesA.kamoku).avrage;
↑でID = 100 のkamoku の平均を求めていますが、
Datedayの最新10件で平均を求めるのはどんな書き方があるでしょうか?
後、IDの割合を求めるときに↑のwhere tesA.id == 100 を外したのをもう一回やって割り算しているのですが一括で書くときはどうすればいいでしょうか?
630:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/21 22:40:08.70 EumYM2T30.net
>>621
var av = (
from tesA in bs.Cast<Person>()
where tesA.id == 100
order by tesA.Dateday descending
select tesA.kamoku
).Take(10).Average();
IDの割合の方は質問の意味が分からない
631:デフォルトの名無しさん (ワッチョイ fa73-XpIe)
16/11/21 23:04:49.74 7M/YTSBB0.net
>>622
ありがとうございます。参考になります。
IDの割合はAverageでなくてcountにしたほうがよかった。すみません
今は↓の結果 items100 / itemsALLで割合をだしています。これを1回で書きたいです。
var items100 = (from tesA in bs.Cast<Person>()
where tesA.id == 100
select tesA.kamoku).count;
var itemsALL = (from tesA in bs.Cast<Person>()
select tesA.kamoku).count;
632:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/21 23:08:48.37 EumYM2T30.net
items100 / bs.Count でいいだろそれ
633:デフォルトの名無しさん (ワッチョイ 5e41-mj3c)
16/11/21 23:14:12.37 lc1W0DQ40.net
一連のスイッチのオンオフを配列にいれて
シーケンスな処理を
634:するんですが そのままだと当然boolの配列です。 この場合、配列にする際にConvert.ToInt32を使い 0,1の配列にした方が処理速度が速くなる ということはあるでしょうか? 配列数は多くても64個です。 自分で確認はまだしてないですが 知見多き方お願いします。
635:デフォルトの名無しさん (ワッチョイ fa73-XpIe)
16/11/21 23:22:00.28 7M/YTSBB0.net
>>624
>>623
すみません
items100 / bs.Count だと実際にやりたいので使えないので
↓ので items100 / itemsALL で書くときはどうしたらいいでしょうか?
var items100 = (from tesA in bs.Cast<Person>()
where tesA.id == 100
select tesA.kamoku).count;
var itemsALL = (from tesA in bs.Cast<Person>()
where tesA.id > 100
select tesA.kamoku).count;
636:デフォルトの名無しさん (ワッチョイ 0448-dXbs)
16/11/21 23:30:37.04 cS6E2DFI0.net
>>625
BitArrayを調べてみたらいい、非ジェネリックでは唯一つかえる存在かもな
637:デフォルトの名無しさん (アウアウオー Sa36-MfQN)
16/11/21 23:34:45.98 4A1pLeCTa.net
>>625
bool使って遅くなる理由があると思えんなあw
どっちにしろ要素数64じゃ差はでないでしょ。
「シーケンシャルな処理」とやらが単純な論理演算ならboolやboolの代用にintを使った配列ではなく、
intをビットワイズで使えば圧倒的に高速になるとは思う
638:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/21 23:55:19.26 EumYM2T30.net
>>626
短くしたいだけならこれでいいだろ
var persons = bs.Cast<Person>();
var items100 = persons.Where(p => p.id == 100).Count();
var itemsALL = persons.Where(p => p.id > 100).Count();
全件スキャンが2度走るのが気持ち悪いということなら、素直にループにするか、
もしくはこんなやり方もできないこともない
var items = bs.Cast<Person>().ToLookup(p => p.CompareTo(100));
return items[0].Count() / items[1].Count();
639:デフォルトの名無しさん (ワッチョイ fa73-XpIe)
16/11/22 00:12:53.34 FPsVs5Xk0.net
>>629
最後のがまだよくわからないけど調べてみます。
ありがとうございました。
640:デフォルトの名無しさん (ワッチョイ 7d7b-XpIe)
16/11/22 00:22:30.53 a+0IO69G0.net
>>630
もしかしてArrayListつかってる?List使った方がいいよ
bs = new List<Person>();
・
・
float result = (float) bs.Count(x => x.id == 100) / bs.Count(x => x.id > 100);
641:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/22 07:30:50.02 agBMDwRZ0.net
関係ないけどfloatは誤差が簡単に表面化するから
初心者スレ的には「最終出力以外には使うな」でいいと思う
642:デフォルトの名無しさん (ドコグロ MM74-EDxK)
16/11/22 09:09:41.67 iOkC5GDaM.net
>>574
遅くなりすみません。
教えていただいたコードでうまくいきました。
ありがとうございました。
使っているのはVisual C# 2013です。
643:デフォルトの名無しさん (ワッチョイ 40d9-k96Z)
16/11/22 13:19:07.30 xeeHVDvp0.net
VS2013のC#って>>574の書き方は出来なかったはずだが
644:デフォルトの名無しさん (ワッチョイ 5e41-mj3c)
16/11/22 20:13:44.80 ZJs8cfZ60.net
>>627
>>628
ありがとうございます!!
そうですよね、このくらいの要素数なら
どっちにしろ誤差レベルとは思いましたが
かなり有益な情報得られたんでよかったです
調べてみます!
645:デフォルトの名無しさん (ワッチョイ 800d-ke/V)
16/11/22 21:09:02.72 0tp2RUgI0.net
MVVMで、AのViewにあるボタンを押したらBのViewにBindingされているViewModelの値を変更するにはどうすればいいですか?
646:デフォルトの名無しさん (オッペケ Sra9-hkLf)
16/11/22 21:23:07.00 vhsrXRxUr.net
>>636
AとBにモデルとして関連があるなら、それ同士で連係。
画面としてのみの関連なら、ViewModel同士で連係。
647:デフォルトの名無しさん (ワッチョイ 800d-ke/V)
16/11/22 21:39:14.03 0tp2RUgI0.net
>>637
返信ありがとうございます
ViewModel同士の連係の方ですが、具体的にどのようにすればいいでしょうか?
例えばBのViewModelにあるIsEnabledというメンバー変数の値がある場合、StaticにしてAのViewModelでBのViewModelのインスタンスを作るのでしょうか?
648:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/22 21:48:58.09 agBMDwRZ0.net
>>638
AがBのインスタンスを作るんならStaticにする必要は全く無いだろ
しかし、そもそもVMを設ける目的は単体テストであるということを考えると、
VMが別のVMに明示的に依存するのは好ましくない
理想を言えば、AからBを直接newしたりBのメンバに直接アクセスするのではなく、
インターフェース (例えばIB) を定義してAからはIBを通してアクセスすることにして
AにBのインスタンスを外から渡してやるのがいい
インスタンスを渡すのはViewでやるかDIコンテナ使う
649:デフォルトの名無しさん (ワッチョイ 800d-ke/V)
16/11/22 21:58:02.53 0tp2RUgI0.net
>>639
ご教授ありがとうございます!
ただ、
>インターフェース (例えばIB) を定義してAからはIBを通してアクセスすることにして
>AにBのインスタンスを外から渡してやるのがいい
この部分がわからないので、コードで実例を教えてください
650:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/22 22:11:27.86 agBMDwRZ0.net
>>640
こんな感じ
interface IEnableable { public bool IsEnabled { get; set; } }
class AView {
private AViewModel vm;
public AView() {
this.vm = new AViewModel(BViewModelのインスタンスを取得());
}
}
class AViewModel {
private IEnableable b;
public AViewModel(IEnableable b) {
this.b = b;
}
void 連携する() {
this.b.IsEnabled = true;
}
}
class BViewModel : IEnableable {
public bool IsEnabled { get { 略 } set { 略 } }
}
BViewModelのインスタンスを取得() のところはnew BViewModel()でもいいしシングルトンでも何でもいい
MVVMでは依存関係はなるべくViewに押し付けるのが基本
651:デフォルトの名無しさん (ワッチョイ 800d-ke/V)
16/11/22 22:21:59.10 0tp2RUgI0.net
>>641
なるほど、このようにやるんですね
Viewに押し付けるというのも勉強になりました
本当にありがとうございます!
652:デフォルトの名無しさん (ワッチョイ 9cba-XpIe)
16/11/22 22:34:41.26 BBlq8Dj70.net
アプリケーションの設定を保持するクラスを作ってこれをシリアライズできるようにしたのですが、
このシリアライズしたものをapp.configに含むことはできるでしょうか?
ファイル名や場所をコードで指定するのが嫌だなぁという程度の理由ですが。
653:デフォルトの名無しさん (ワッチョイ b5dc-Th+s)
16/11/22 22:42:45.68 agBMDwRZ0.net
>>643
System.Configuration.ConfigurationSection
でも普通にSettings使った方が簡単だと思うけど
654:デフォルトの名無しさん (ワッチョイ 9cba-XpIe)
16/11/22 23:20:36.22 BBlq8Dj70.net
そうですか、無いですか。ありがとうございました。
655:デフォルトの名無しさん (ワッチョイ a030-qiik)
16/11/23 01:45:13.48 MGsJz9yg0.net
噛み合ってなさが絶妙
656:573 (ドコグロ MM87-f5kA)
16/11/24 09:42:16.88 EZR6VYZqM.net
>>573 です。
if(1 == args.Count()){
var t1 = new TestItem("デバイス1");
}
if (2 == args.Count()){
t1.AddMeasured(new Measured("電圧", "V", 1));
t1.AddMeasured(new Measured("電流", "mA", 100));
testItems.Add(t1);
}
上記のようにすると下IF文内のt1が”現在のコンテキスト内に存在しません”となってしまします。
IF分の条件式は例ですがt1の生成と値の格納が同条件でない場合は
どのように処置するべきでしょうか。
やりたいことはテキストファイルから各語を読み出して格納して数値演算(平均値、最大、最小、標準偏差)したいのです。
テキストに格納してある情報は次の順になります。
”項目名1”
”項目名1の測定値1”
”項目名2”
”項目名2の測定値1”
・・・
”項目名10”
”項目名10の測定値1”
”項目名1”
”項目名1の測定値2”
・・・
1回目の”項目名n”を取得したときに配列(List)を生成し
その後は”項目名n”により選択した生成済みの配列に”測定値n”を格納したいです。
本業はHWよりのためC#基礎がわかって無く申し訳ありません。
でも何とかできることは自分で処理したいと思っています。
よろしくお願いします。
657:デフォルトの名無しさん (ワッチョイ ab3a-/sNf)
16/11/24 10:18:45.81 +mUg/yMV0.net
>>647
if文の外で変数定義する。
『スコープ』の概念を学ぶべし。
今のレベルの基本が分かってない内はvar使わない方が良いかも。
varは便利だし正しく使えば特に害のない機能だけど、意味が分からないうちはやめとこう。
658:デフォルトの名無しさん (ドコグロ MM27-f5kA)
16/11/24 11:09:09.16 IyDqbIdrM.net
>>648
ありがとうございます!
チャレンジしてみます。
659:デフォルトの名無しさん (ワッチョイ a77b-rApL)
16/11/24 12:28:53.06 P/Ibr7r50.net
varは積極的に使うべきだよ。
660:デフォルトの名無しさん (ワッチョイ c748-AQyI)
16/11/24 14:01:47.31 4ySrR9x20.net
>>647
標準偏差は自前で計算してもいいけどMath.NET Numericsというのが既にある(nugetで入れる)
URLリンク(ideone.com)
こういうのってRの方が手っ取り早い気がする
CSVの読み込みからグラフ描画まで揃ってるしな
661:デフォルトの名無しさん (ワッチョイ 5b3c-/sNf)
16/11/24 14:14:09.14 G2Ig6Dqz0.net
>>648
var関係ないやろ
662:648 (ブーイモ MMc7-/sNf)
16/11/24 15:37:41.35 cupH4QVAM.net
>>650
それは同意する。積極的に使うべき。
ただ、スコープの理解がまだの方には少し毒と思っただけ。
>>649
異論も多いようなので、varに関しては先ほどの発言を気にせず自由にやって下さいな。頑張って!
663:デフォルトの名無しさん (JP 0Hdf-sTmH)
16/11/24 17:51:15.84 2Y5JG7GhH.net
質問します。
ファイルの存在を確認する方法についての質問です。
if (System.IO.File.Exists(@"C:\tmp\sample.txt"))
{
MessageBox.Show("ファイルは存在します");
}
else
{
MessageBox.Show("ファイルは存在しません");
}
上記例の場合、
「tempフォルダ内のsample.txtというファイル」
の存在を確認するようになっていますが、
同時に異なる2つのフォルダ内の2種類のファイルの存在を
確認するにはどうすればいいのでしょうか?
C:\tmp1\sample1.txt
C:\tmp2\sample2.txt
が同時に(又は片方だけ)存在する場合の処理を行いたいと思っています。
File.Exists((@"C:\tmp1\sample1.txt")&&(@"C:\tmp2\sample2.txt"))
みたいな書き方はできないんでしょうか?
やってみたらNGになったんで質問した次第です。
よろしくお願いします。
664:デフォルトの名無しさん (ワッチョイ c748-AQyI)
16/11/24 18:09:09.66 4ySrR9x20.net
この場合は
if (File.Exists(@"C:\tmp\sample.txt") && File.Exists(@"C:\tmp\sample2.txt")) {}
if (File.Exists(@"C:\tmp\sample.txt") || File.Exists(@"C:\tmp\sample2.txt")) {}
という風にFile.Existsが2回必要なわけだろ
可変で1個かもしれないし2個以上かもしれないというときは
string[] list = { @"C:\tmp\sample.txt", @"C:\tmp\sample2.txt", };
に対してLINQが使える
if (list.All(x => File.Exists(x))) {}
if (list.Any(x => File.Exists(x))) {}
665:デフォルトの名無しさん (スッップ Sdaf-/sNf)
16/11/24 18:11:35.21 HdRBGkCMd.net
>>654
Exists(..)を&&で繋げば良いよ。
666:デフォルトの名無しさん (ワッチョイ abdc-MM3T)
16/11/25 07:04:44.10 9jtEtGtN0.net
>>655
その場合、
list.All(File.Exists)
list.Any(File.Exists)
の方がスマート
667:デフォルトの名無しさん (JP 0Hdf-sTmH)
16/11/25 09:44:10.37 55zEIhIxH.net
654です。
ありがとうございました。
なるほど、パス名を&&でつなげてもだめですね。
File.Exists(・・・)&&File Exists(・・・)を
にしなきゃダメですね。
やってみたらうまくいきました。
LINQはあまりわかってないんですが、
やっぱり使えれればかなりコードを書くのが楽になるんでしょうか?
時間ができればやってみてもいいかなぁと思っていますが・・・
668:573 (ドコグロ MMcf-f5kA)
16/11/25 10:18:27.69 cWogpahDM.net
>>651 >>653
レスありがとうございます。
勉強になります。
徐々に方向性が見えて来たような気がしています。
ありがとうございます。
669:デフォルトの名無しさん (ワッチョイ 37d9-1MTn)
16/11/25 16:46:17.82 3a2jMeJO0.net
>>655を見て、RMAX未満のint乱数をN回発生させてori[]が含まれている回数を
LINQで数えたいのですが、こんなのになってしまいました
もっと簡単に書ける方法はないでしょうか
const int N = 10000;
const int RMAX = 10;
Random r = new Random();
int c = 0;
int[] ori = {1, 5};
Enumerable.Range(1, N).Select(i => new { j = r.Next(RMAX) }).Select(i => ori.Any(j => j == i.j)).Where(i => i).Select(i => { c++; return 0; }).ToArray(); // 0~9の中にori[]が含まれているかどうか調べる
Console.WriteLine($"{N}回の繰り返しで 0~{RMAX - 1} の中にori[]が含まれていたのは {c} 回でした。");
670:デフォルトの名無しさん (オッペケ Sre7-4iO2)
16/11/25 17:23:50.79 vVyJsUPAr.net
Selectに副作用書くな
671:デフォルトの名無しさん (ワッチョイ c748-AQyI)
16/11/25 17:46:39.77 k5F1VYSo0.net
つか毎回乱数作ると検証しようがないよな
int[] randoms = new int[N];
for (int i = 0; i < N; i++)
randoms[i] = r.Next(RMAX);
というのがあったと仮定して以下を実行する
c = randoms.Where(ori.Contains).Count();
672:デフォルトの名無しさん (ブーイモ MMc7-/sNf)
16/11/25 17:51:48.96 yM8tzyplM.net
int count = Enumerable.Range(1, N)
.Select(_ => r.Next(RMAX) )
.Count(ori.Contains);
673:デフォルトの名無しさん (ワッチョイ 27ba-lM3r)
16/11/25 23:44:37.58 8749fss/0.net
検証は普通、同じシードの疑似乱数使うだろ。
674:デフォルトの名無しさん (オッペケ Sre7-4iO2)
16/11/26 05:41:07.62 BlR4fLnAr.net
そこで、Stateモナド登場。
675:デフォルトの名無しさん (ワッチョイ 37d9-1MTn)
16/11/26 15:45:30.50 q0gSFGbR0.net
>>661-663
ありがとうございます
Select()に副作用書くのはListだとForEach()があるのですが、配列だと使えないので
無理矢理感がありますが許してください(汗
676:デフォルトの名無しさん (オッペケ Sre7-4iO2)
16/11/26 15:59:56.88 BlR4fLnAr.net
>>666
許せぬ。
普通に>>663で良いんでないの?
677:デフォルトの名無しさん (ワッチョイ 1349-lVzu)
16/11/26 16:01:54.05 pkHe6RQg0.net
>>666
ゆるさん。
根本的にLINQの使い方が間違ってる。
678:デフォルトの名無しさん (ワッチョイ 37d9-1MTn)
16/11/26 16:46:10.56 q0gSFGbR0.net
>>667-668
駄目ですか
精進します
>>664
こうやってみました
DateTime dt = DateTime.Now; // 乱数のシード値に使う
Random r = new Random((int)dt.Ticks);
// 乱数測定1
Random r = new Random((int)dt.Ticks);
// 乱数測定2
以下続く
679:デフォルトの名無しさん (ワッチョイ 37d9-1MTn)
16/11/26 16:58:09.08 q0gSFGbR0.net
あ、違った
DateTime dt = DateTime.Now; // 乱数のシード値に使う
Random r = new Random((int)dt.Ticks);
// 乱数測定1
r = new Random((int)dt.Ticks);
// 乱数測定2
以下続く
680:デフォルトの名無しさん (ブーイモ MMaf-VGur)
16/11/26 17:05:31.40 /HuSQ2djM.net
public static class EnumerableEx {
public static IEnumerable<int> Randoms(int seed, int max, int count) {
var r = new Random(seed);
for(int i = 0; i < count; ++i)
yield return r.Next(max); }}
c = EnumerableEx.Randoms(seed, RMAX, N).Count(ori.Containts);
681:デフォルトの名無しさん (ワッチョイ abdc-MM3T)
16/11/26 17:27:30.27 UC4M2NKY0.net
>>671
引数のcountは無しで無限ストリームにした方が美しいと思う
有限にしたければTakeで切ればいい
682:デフォルトの名無しさん (オッペケ Sre7-4iO2)
16/11/26 20:57:24.75 BlR4fLnAr.net
>>670
続きは?
683:デフォルトの名無しさん (オッペケ Sre7-4iO2)
16/11/27 02:43:47.55 vLOqtuLor.net
public static IEnumrable<T> Randoms<T>(Func<T> next)
{
while(true) {
yield return next();
}
}
任意の乱数アルゴリズムを渡せるようにと考えたけど、もはやランダムとは無関係だよねww
684:デフォルトの名無しさん (ワッチョイ abdc-MM3T)
16/11/27 07:11:41.91 dEf188sX0.net
>>674
名前が既に機能を表してないのはともかく、これは副作用が前提になるからよくない設計
どこかで副作用を使ってない限りnext()は必ず毎回同じ値になるはず
685:デフォルトの名無しさん (ワッチョイ 370b-PVnu)
16/11/27 13:07:28.68 ZDMyX7Jh0.net
普通に何がしたいのか分からない
686:デフォルトの名無しさん (ワッチョイ 87ce-w12Y)
16/11/28 06:20:00.23 d2SeRThv0.net
687:乱数列をインデックスで参照したいだけ なんでしょ?
688:デフォルトの名無しさん (ワッチョイ 87d4-TEJY)
16/11/28 20:53:46.42 jgfNB/jg0.net
実際のプログラムでデリゲート/イベントをどう使うのが便利なのか、理解できる教材・WEBサイト等があれば教えてください
689:デフォルトの名無しさん (ワッチョイ c748-AQyI)
16/11/28 21:37:11.66 TQQs9y8p0.net
URLリンク(msdn.microsoft.com)
690:デフォルトの名無しさん (ワッチョイ 4f4c-/sNf)
16/11/29 10:18:57.84 PfRgidpN0.net
関数ポインタなイメージだわ
691:デフォルトの名無しさん (ワッチョイ 87ce-w12Y)
16/11/30 00:56:16.15 H3buRLlE0.net
Win32APIのコールバックに渡せる時点で外部からの見え方は関数ポインタそのもの
そこにどうやってインスタンもねじ込んでるのか正確には知らないけど
関数ポインタをユニークなヒープ領域に書いてそれを渡して呼び出させる
みたいな気持ち悪いことを裏でやってるんだろう
692:デフォルトの名無しさん (ワッチョイ 87ce-w12Y)
16/11/30 01:03:41.03 H3buRLlE0.net
少なくとも1度はヒープ上でコード実行してるはずなんだけど
スパイウェア認定されたりしないのはなぜだろう
693:デフォルトの名無しさん (ワッチョイ 279d-lM3r)
16/11/30 01:04:12.90 w8bfAEOD0.net
動けばいい
694:デフォルトの名無しさん (ワッチョイ a77b-rApL)
16/11/30 02:53:33.77 5s/CT6+70.net
>679
Msdnの説明なんて99%糞だよな。頭和杉、マクロバカって書いてある本を
見たことがある。
でもたまに凄くわかりやすいのがある。今日まさにそれに出会って
感想欄に
MSDNにしては本質をついていてわかりやすい。こんなにわかりやすい
せつめいは初めてだ。
これはMSDNの文章とは違う素晴らしい文章だ。たぶん外注のライターが
書いたものだと思うが、こういう外注さんは大事にしなさい。
ありえないとは思うが、もし万が一社員が書いたものならぜひともボーナス
を弾んであげてほしい。
と書いておいた。
695:デフォルトの名無しさん (ワッチョイ 5b3c-0AhV)
16/11/30 02:59:23.96 PzfaC3Zi0.net
精神を病んでいる様だからカウンセラーにでも相談したまえ
696:デフォルトの名無しさん (ワッチョイ abdc-MM3T)
16/11/30 07:35:52.74 TOIBVM0F0.net
>>681
マネージコードからの通常のInvokeや一般のクラスやインターフェースの仮想メソッド呼び出しでも
JITのために�
697:ッ様の仕組みがあるらしい デリゲートが関数ポインタを持ってるんじゃなくて、呼び出し元(call siteという)ごとのキャッシュとして ネイティブ関数を生成するみたいだ
698:デフォルトの名無しさん (ワッチョイ a77b-rApL)
16/11/30 10:16:51.02 5s/CT6+70.net
Delegateはクラスを着ていない素っ裸の抽象メソッドだと思う。だから
デレッってしてる。
クラスと同様にインスタンスを作成して使うけれども抽象メソッドだから
実態のメソッドを代入して使用する。
その時に実態のメッソッドから名前を剝ぎ取った素っ裸のメソッドが
ラムダ式だ。
スッポンポンというところがデレゲートとラムダは似ている。
699:デフォルトの名無しさん (ワッチョイ a77b-rApL)
16/11/30 10:35:50.72 5s/CT6+70.net
delegate int delSm(int i); //型紙delSmを作成する。
void test() {
delSm Sm; //型紙delSmから洋服Smを作成
Sm = (x => x * x); //素っ裸のメソッドにSmを着せる
int j = Sm(16); //j = 256
}
700:デフォルトの名無しさん (ワッチョイ 5c03-Z4eY)
16/12/01 16:54:34.62 0Um+ha3M0.net
C#の質問で無く恐縮ですが
VS2013でC#コード入力していますが
補完機能の振る舞いがよくわからないことがあります。
例えば"int"と入力する場合
i→n→tとキーインすると
補完候補は"int"の表示が選択されています。
ここでスペースをキーインすると
エディタには"iint"と入力されてしまいます。
どういうことでしょうか?
returnもrreturnとなってしまいます。
701:689 (ワッチョイ 5c03-Z4eY)
16/12/01 16:55:46.18 0Um+ha3M0.net
もしかしてATOKのせいでしょうか。
702:デフォルトの名無しさん (ワッチョイ 6bc0-/mAi)
16/12/01 19:32:35.80 Zf0m27Yo0.net
TABキーで補完すればいいんじゃね
703:デフォルトの名無しさん (ワッチョイ d1d6-NTgB)
16/12/01 23:26:48.62 iYDC/6Ae0.net
>>689
ATOK使ってるけど普通に使えてるな
VSのサービスパックでも当てたら直るんじゃね?
704:689 (ワッチョイ 5c03-Z4eY)
16/12/02 08:57:18.65 31Pwg6Qz0.net
>>691 >>692
ありがとうございます。
TABにしても同じなんです。
SPためしてみます。
と、書いていましたが
たった今VS2013起動して試してみたところ
問題有りませんでした。
原因はわかりませんが再起動すれば良いようですね。
お騒がせしました。ありがとうございました。
705:初心者 (ワッチョイ 50cf-yaSi)
16/12/02 14:04:42.72 mPN6uvNG0.net
C#の勉強したいんですけど
visualstudioのどれをダウンロードすればいいですか?一番左ですか?
706:デフォルトの名無しさん (アウアウオー Sabe-k+pW)
16/12/02 14:22:34.32 KR/8JQ+qa.net
オッスオラ極右
707:デフォルトの名無しさん (フォォーッ MM9b-NTgB)
16/12/02 14:24:44.13 hCuw5ExfM.net
>>694
URLリンク(download.microsoft.com)
708:デフォルトの名無しさん (ワッチョイ 98d4-NTgB)
16/12/02 14:44:59.65 ulrrSATP0.net
いままでPro買ってたけどCommunityでいい気がしてきた
709:デフォルトの名無しさん (オッペケ Sr8d-F2U0)
16/12/02 15:12:50.24 B5+8wL6Vr.net
コミュニティ使っててアプリ作って条件以上の売上出たらどうすればいいの?
710:デフォルトの名無しさん (ワッチョイ 2a02-0Nhh)
16/12/02 15:32:17.74 mFAqdh2w0.net
買えばいいんじゃね、そんなんに売れたんなら
711:デフォルトの名無しさん (ワッチョイ 9220-NTgB)
16/12/02 22:45:54.98 5RQuVDtH0.net
C#というわけではなく、初歩的なことかと思いますが
テスト要領書って、本来コーディング前に作っておくものでしょうか?
うちの会社じゃ
いつもコーディングの後半に作ってるんですが
一般的には
712:どうなんだろうと思いまして
713:デフォルトの名無しさん (ワッチョイ 4dcb-g21N)
16/12/02 22:56:52.05 2vcaPjiT0.net
マルチポストしてんじゃねえぞチンカス野郎
714:デフォルトの名無しさん (ワッチョイ 115b-25R2)
16/12/02 23:15:26.91 9K0+rqji0.net
データベース使ったサンプルアプリ作ってみたいのですが、データベースは何を使ったらいいですか?
715:デフォルトの名無しさん (ワッチョイ f4cb-yaSi)
16/12/02 23:44:10.13 UcIXa3VL0.net
>>702
モノによって癖があるよ
インストール方法からして上手くいかないポイントが違う
業務でWindowsアプリ作るならSQLServerExpressがオススメ
絶対使うしね
趣味でレンタルサーバー使うならmysqlが多いかも
716:デフォルトの名無しさん (ワッチョイ d1d6-NTgB)
16/12/02 23:48:17.42 kbaBWwKx0.net
ファイルコピーだけで簡単に動かしたいのならSQLiteもいいぞ
717:デフォルトの名無しさん (ワッチョイ f4ce-BRVC)
16/12/02 23:58:41.69 P1j76Eyi0.net
Windows標準で入ってるJet DBが何も入れる必要ない点でオススメ
718:デフォルトの名無しさん (ワッチョイ 2aaf-MLbx)
16/12/03 00:46:33.44 6QJpBGmN0.net
SQLiteは便利で面白い
Firefoxのクッキーの管理なんかにも使われてる
719:デフォルトの名無しさん (ワッチョイ 115b-25R2)
16/12/03 09:19:05.56 /EDU3A450.net
>>703-706
ありがとうございます!
さっそく調べてみます!
720:デフォルトの名無しさん (ワッチョイ 92e5-/mAi)
16/12/03 10:35:13.28 OhSejOMk0.net
普段threadを生成してやっていた非同期処理を
バージョンアップに合わせてasync await使って実装してみようと思います。
非同期を意識しない場合の元ソースは以下のコード
private void btn_click(省略)
{
var list = getList("なんたら");
}
private List<string> getList(string target)
{
var list = hogehoge関数
return list ;
}
この中で呼び出し元の btn_click から getList関数を非同期で呼び出すことは可能でしょうか?
可能であればいずれ同期的に使う可能性も含めて getList関数には手を入れたくはないのですが、入れられないのであれば手を加えても問題ありません。
有識者の皆様、何かしらヒントでもご教示いただけれb幸いです。
721:デフォルトの名無しさん (ワッチョイ 92e5-/mAi)
16/12/03 10:42:36.75 OhSejOMk0.net
連投失礼
記述ミス修正
getList関数には手を入れたくはないのですが、入れられないのであれば手を加えても問題ありません。
↓
この中で呼び出し元の btn_click から getList関数を非同期で呼び出すことは可能でしょうか?
可能であればいずれ同期的に使う可能性も含めて getList関数には手を入れたくはないのですが、入れなければいけないのであれば手を加えても問題ありません。
Task<List<string>>にしないといけないんだろうなぁ…とは思いますが…。
722:デフォルトの名無しさん (ワッチョイ 2a02-0Nhh)
16/12/03 10:56:58.35 rfPwjFy00.net
普通は同期版と非同期版と二つ定義するんじゃないのか
getListは同期関数にしたいの?非同期関数にしたいの?
723:デフォルトの名無しさん (ワッチョイ 39dc-Cf2b)
16/12/03 11:00:28.76 x7z2pgeG0.net
なんか勘違いしてそう
async使うなら最終的にIOやユーザー操作でブロックされるところまで全部非同期で繋がないと意味ないよ?
724:デフォルトの名無しさん (ワッチョイ 839d-5gNI)
16/12/03 11:03:34.95 n86jitUO0.net
var list = await Task.Run(() => getList("..."));
こういうことじゃないの?
725:デフォルトの名無しさん (ワッチョイ 39dc-yaSi)
16/12/03 13:23:04.99 x7z2pgeG0.net
ところで、asyncを全面的に使ってるとストリームにたかが数バイトを書き込むだけみたいな
時間的粒度の小さいメソッドでもいちいちawaitせざるを得ないことがよくあると思うんだけど、非効率だからまとめて処理できないもんかな
個人的には、全ての書き込みがバッファリングされることが保証されてるAsyncStreamみたいなクラスがあって
後でにまとめてawait FlushAsyncするという考え方の方がWriteAsyncより使いやすいと思うんだけど
726:デフォルトの名無しさん (ワッチョイ 92e5-/mAi)
16/12/03 13:33:41.53 OhSejOMk0.net
>>710-712
イメージ的には
getList←同期
getListAsync←非同期(内部でgetListを呼ぶ)
のようになるのかなと。
もとのgetList自体は同期処理で動くようにしておきたかっただけという簡単なものでした。
>>712さんの言うところで出来てしまいました…。
あっさり過ぎて…ありがとうございました。
これでUIが固まらない為だけの面倒な非同期を書かなくて済みそうです。
727:デフォルトの名無しさん (スッップ Sda8-wK09)
16/12/03 17:28:43.65 6dOdOU6od.net
商用で使えるフリーの開発環境ってありますか?
728:デフォルトの名無しさん (ワッチョイ 39dc-yaSi)
16/12/03 17:42:27.55 x7z2pgeG0.net
>>715
小規模な企業までならVS Communityが商用利用可
Communityが使えない規模ならVS Express
729:デフォルトの名無しさん (ワッチョイ 8d4a-JWTN)
16/12/03 21:57:51.27 NEbgZC1U0.net
>List<T>も2次元にはできないが、そもそも2次元にする必要がない
list<list<T>>で二次元じゃあないの?
730:デフォルトの名無しさん (ワッチョイ 839d-5gNI)
16/12/03 22:06:20.99 n86jitUO0.net
広義の二次元だけど狭義の二次元ではない、かな
多次元配列とジャグ配列で呼び分けるから
731:デフォルトの名無しさん (ワッチョイ 1ee1-yaSi)
16/12/03 22:51:22.62 1XG4MZmv0.net
>>713
その程度なら自分で実装すればよくね?
732:デフォルトの名無しさん (ワッチョイ 6b0d-BRVC)
16/12/03 23:02:24.03 nNmCZ+K50.net
TreeViewでファイルエクスプローラーを作りましたが
ファイルやフォルダの数が多すぎると必ずフリーズします
例えば肥大化した"C:\Windows\WinSxS"を表示するにはどうしたらいいですか?(私の環境ではサブフォルダ数が1万数千あります)
733:デフォルトの名無しさん (ワッチョイ f4ce-BRVC)
16/12/03 23:27:08.60 55Oi6B7P0.net
>>720
そもそも1万件とか画面に一度に表示できる数じゃないんだから
一部だけ出すとか表示方法を工夫する以外にないよ
既存のファイラーとかを参考にしてみたらどうかね
734:デフォルトの名無しさん (ワッチョイ f4cb-yaSi)
16/12/04 00:29:04.69 tP3D55j/0.net
>>720
開いたフォルダのみ中身を表示してはどうだろうか?
735:デフォルトの名無しさん (ワッチョイ 5c7b-BMT5)
16/12/04 20:20:27.84 HFDVK7VF0.net
Rxをテストしようとおもうのだが、
using System.Reactive.Linq;
これを追加しても
エラー CS0234 型または名前空間の名前 'Reactive' が名前空間 'System' に存在しません (アセンブリ参照があることを確認してください)。
となる。参照を探してもmscore.libしかないがこれをチェックすると
「すでにビルドに組み込まれているのでエラー」になる。
どうしたらいいの?
736:デフォルトの名無しさん (アウアウカー Sa05-F2U0)
16/12/04 20:35:11.66 iX2mGjzba.net
Rxはインストールしたの?
標準ではないよ
737:デフォルトの名無しさん (ワッチョイ 5c7b-BMT5)
16/12/05 06:04:42.72 kVcVuvgX0.net
VS Community 2015で
Nuget パッケージマネージャー画面でSystem.Reactiveをインストールしようと
する
設定は参照にして、パッケージソースは「すべて」
Nuget.org
packagesource
Microsoft and .NET
Microsoft Visual Studio Offline Package
にしている。
'.NETFramework,Version=v4.5.2' を対象とするプロジェクト 'WpfApp1' に関して、
パッケージ 'System.Reactive.3.1.1' の依存関係情報の収集を試行しています
Unable to load the service index for source URLリンク(packagesource.)<) このエラーが出るのはパッケージマネージャの設定に
間違いがあるんだろうか?
738:デフォルトの名無しさん (ワッチョイ 5c7b-BMT5)
16/12/05 07:19:43.60 kVcVuvgX0.net
PM> Install-Package System.Reactive
Install-Package : ソース '' 内でパッケージ 'System.Reactive' が見つかりません。
つまりパスが違っている。DefaultPathはどこに設定するのだろうか?
739:デフォルトの名無しさん (ワッチョイ 5c7b-BMT5)
16/12/05 07:22:18.16 kVcVuvgX0.net
あれっ、頭にきてボタンを押しまくっていたらインストールできた。
なぜだ? わからんが、とにかくインストールできた。手当たり次第に
出たらめにやるのがいいみたいだ。
740:デフォルトの名無しさん (アウアウオー Sabe-wK09)
16/12/05 21:52:16.25 7n2NXvP5a.net
「n = n + 1」「n++」「n += 1」
の中で速度が速い、またはメモリの消費が少ない手段はどれですか?
今回の使用目的はループ内でのカウンタです
また、それぞれの使い分けがわからないので適切な使用箇所があれば教えてください
741:デフォルトの名無しさん (ワッチョイ 9213-ggLi)
16/12/05 21:55:01.48 +86vS9TV0.net
>>728
差はないから好きにすればいい
742:デフォルトの名無しさん (ワッチョイ 467d-NTgB)
16/12/05 22:28:32.97 k7XpTrID0.net
++はコピーが入る
743:デフォルトの名無しさん (ワッチョイ 4d7b-1jzX)
16/12/05 22:44:22.01 VOjnBi1e0.net
出たな、半可通
744:デフォルトの名無しさん (オッペケ Sr8d-E9Xg)
16/12/06 02:55:06.76 4zSpj2YCr.net
>>727
VSのnugetのインストーラが古いので更新する必要がある場合がある。
745:デフォルトの名無しさん (アウアウカー Sa67-OnqS)
16/12/09 10:45:19.60 0JyYFlmma.net
>>728
cpy add 1 mov
inc
add 1
746:デフォルトの名無しさん (JP 0H5f-l58V)
16/12/09 10:50:44.15 u4ONmpntH.net
それだけで文にするならどうせ最適化されるでしょ
部分式として使ってるならしらんけど
747:デフォルトの名無しさん (ワッチョイ 07ce-3ple)
16/12/10 21:08:20.94 9pHrXFRT0.net
カウンタならどうでもいいけど
インデックスとして使うならunsafe付けてポインタ扱った方がいい
748:デフォルトの名無しさん (ワッチョイ d349-mlnL)
16/12/10 21:20:26.17 THyFY8cN0.net
そんなのが必要になる場合は限られる。
初心者スレでunsafeを気軽に進めない方が良い。
749:デフォルトの名無しさん (ワッチョイ ebdc-Ts63)
16/12/10 21:36:24.82 MAlDTlrl0.net
fixedはpinのオーバーヘッドがあるから頻繁に使うとかえって遅くなるよ
750:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 06:33:33.19 caNoEqSZ0.net
>TreeViewでファイルエクスプローラーを作りましたが
>ファイルやフォルダの数が多すぎると必ずフリーズします
>例えば肥大化した"C:\Windows\WinSxS"を表示するにはどうしたらいいですか?
>(私の環>境ではサブフォルダ数が1万数千あります)
自分もこれで悩んでる。1分ごとに測定したデータが1ファイルごとに1年分ある。
60x20x360=43万ファイル
これをGetFilesでファイル名を取り出して集計処理しようとするとファイル読み出しで
ハングする。
やり方がよくわからないので先輩に聞いたら
「Application.EentDoを入れたらキーが効くのでハングしないよ」
というアドバイスをもらってやってみたが、ダメだった。
で自分で少し調べてみたんだが、
UIの同一スレッドでこれをやると原理的にだめ。処理が重すぎてかならずハングする。
スレッドを分ける方法として、タスクプールを使う方法とスレッド生成がある。
タスクプールを使うのがよい。Async/Await
というところまでは分かったんだが、どうやって実現したらいいのかまだよくわからん。
751:デフォルトの名無しさん (ワッチョイ 07d4-QGPA)
16/12/11 06:47:31.93 fUQnV1N+0.net
非スタティックなメソッドを呼び出したい場合に、
new クラス名.メソッド名();
とするのはなにか問題があるのでしょうか?
752:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 08:40:31.81 caNoEqSZ0.net
>739
それはコンパイルエラーになるから問題ないと思うが、、、
753:デフォルトの名無しさん (ワッチョイ ebdc-6LJV)
16/12/11 09:12:08.77 xUW3RgdE0.net
>>739
new クラス名().メソッド名();
の間違いと仮定した上での回答だが、
毎回必ずそのパターンで使用されるのであれば実質staticメソッドと変わらないからstaticメソッドにすることも検討すべき
パラメータが複雑な場合にBuilderパターンとFluentなスタイルを組み合わせて、
new Request().WithEncoding(UTF8).with…().Send();
みたいにするのは丁寧に作られてるライブラリだとよくあるけど
754:デフォルトの名無しさん (ワッチョイ 07cb-1E9w)
16/12/11 09:24:54.90 G916gL+V0.net
>>738
仕様が決まってない問題をAPIの問題にすり替えてる
超たくさんファイルがあるとき結局どうしたいの?
全部表示したいの?一部表示したいの?
ユーザに指定させて表示したいの?
755:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 09:42:50.42 caNoEqSZ0.net
仕様は明白だとおもうが、、、
TreeView表示と同じだが、ファイルを読みだしてグラフ表示しながら同時にファイル
読み出しとその集計処理もやる必要がある。
100ポイントづつを読みだして処理して表示する。
続きを100ポイント読みだして処理して表示する。
このようにシングルスレッドのなかで実現できれば、それが最も良い。
しかし、処理を分割するのはGetFilesのようなライブラリを
使う場合は中断して途中から再開は不可能だ。
そこで、GetFilesは別タスクで動かして非同期処理をするパイプを作ればいい。
task1 thread
data = getfiles();
FIFO.add(data);
UI thread
tree.add( FIFO.read());
というのが検討中の内容だ。
756:デフォルトの名無しさん (ワッチョイ ebdc-Ts63)
16/12/11 09:42:54.26 xUW3RgdE0.net
>>738の場合は小手先のコーディングでどうするという問題じゃなくて
SparkとかHiveとか使えばいいんじゃないか
757:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 09:51:31.24 caNoEqSZ0.net
それちょっと調べてみるが、C#にキューってのがあるが、それじゃだめなの?
758:デフォルトの名無しさん (ワッチョイ ebdc-Ts63)
16/12/11 09:54:31.80 xUW3RgdE0.net
>>745
抽象度が全然違う
ちゃんとしたビッグデータ処理基盤を使えば、
データを全部HDFSに放り込んでおきさえすれば簡単にデータセット全体にクエリがかけられる
いちいち要件に応じて作り込まなくていい
759:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 09:55:28.07 caNoEqSZ0.net
>744
そんな商用ツールは見掛け倒しと思って間違いない。第一広まらないy。
760:デフォルトの名無しさん (ワッチョイ ebdc-Ts63)
16/12/11 09:58:51.14 xUW3RgdE0.net
>>747
オープンソースだしデータ処理の世界じゃクソ有名だよ?
脊髄反射で拒否する前にちょっとは新しいことに興味持ってみてもいいんじゃないかな、
余計なお世話かもしれないけど
761:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 10:05:36.19 caNoEqSZ0.net
えっ、オープンソースなのか。俄然興味がわいてきた。w
762:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 10:07:25.47 caNoEqSZ0.net
普通のDBに比べてSpark、Hiveは何がいいの?
763:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 10:12:32.86 caNoEqSZ0.net
グラフ表示するような案件だとSpark SQLがいいみたいだね。 速い。
764:デフォルトの名無しさん (ワッチョイ ebdc-Ts63)
16/12/11 10:16:20.28 xUW3RgdE0.net
>>750
ざっくりいえば大量データのバッチ処理が速い
レイテンシが大きいのでリクエストをリアルタイムに処理して結果を返すようなものには向いていない
765:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 10:33:30.52 caNoEqSZ0.net
C#を最近勉強をはじめたばかりだが、これはすごい言語だな。まさにアルゴリズムの最高哲学
という印象を受けた。これは面白い。
しかし目移りしてどこから取り掛かったらいいのか困る。VBをチョロっとしか経験がないので
C#には新しい概念がありすぎてミクロ的にもマクロ的にはほんとに目移りする。
LINQ、WPF、RX、ざっとみたところだ。
いままだ右も左もわからないので取り合えず。適当にReactive Extention からマスターして
みようと思っているが、、、、
766:デフォルトの名無しさん (ワッチョイ 0b7b-ymeu)
16/12/11 11:12:34.07 n3GfLzAe0.net
>>739
newより.の方から優先順位が高いので
その例ではクラス名.メソッド名 のスタティックメソッドを呼び出して、その戻り値をnewする事になる
なので、newをカッコでくくる
(new Date).toISOString();
767:デフォルトの名無しさん (ワッチョイ 0b7b-ymeu)
16/12/11 11:13:40.49 n3GfLzAe0.net
ああ、すまん、Javascriptスレと間違えてたわ
768:デフォルトの名無しさん (ワッチョイ ebdc-Ts63)
16/12/11 11:16:14.04 xUW3RgdE0.net
Rxはマイナーな技術だしasync/awaitがわかってれば十分カバーできるからスルーでOK
WPFも終わった技術だから今更要らない
専業コーダーじゃないんなら小手先の技術に拘るのはほどほどにして
マイクロサービス的な連携だとかクラウド活用だとかもっとマクロな領域へシフトしていった方がいいと思うよ
769:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 13:36:37.71 caNoEqSZ0.net
>756
言わんとするところはよくわかる。考え方の本質は同じだとおもう。
できれば楽にプログラムをしたい。
WPFは終わったのだろうか? たしかに流行ってないよね。w
でもMVVMの考え方は間違っていないと思う。
Rxはマイナーな技術なんだろうか? 応用できる範囲がどの程度あるのか
はよくわからない。
LINQには少なからず衝撃を受けたので、Push型のRXはなにかとてつもない発見
がありそうな予感がする。
もっともLINQというよりはIEnubableとかデザインパターンの考え方に衝撃を受けた。
マクロ的な技術を使う上でもミクロをある程度は理解していないと、無駄な使い方
をしてしまう可能性があるように思う。その意味では細部まで100%理解しよう
なんて思わないが、60%くらいは理解しておきたい。
770:デフォルトの名無しさん (ブーイモ MM07-caEn)
16/12/11 13:48:02.76 Z923MDQCM.net
ネタや実験以外でRxなんて使ってる現場存在するのか
771:デフォルトの名無しさん (ワッチョイ 5b79-pq3j)
16/12/11 14:07:20.29 bG1axWcs0.net
フロントならangularについてくるから使うけどC#では使ったことない
772:デフォルトの名無しさん (ワッチョイ 5b79-pq3j)
16/12/11 14:12:00.35 bG1axWcs0.net
angularでもRxはtoPromiseしか使わないから使ってないような物か
773:デフォルトの名無しさん (ワッチョイ d349-mlnL)
16/12/11 14:12:51.19 31wztqOV0.net
>>743
GetFiles()って、Directory.GetFiles()のこと?
それだったら、代わりにDirectory.EnumerateFiles()を使えば逐次処理出来るよ。
774:デフォルトの名無しさん (ワッチョイ d349-mlnL)
16/12/11 14:29:28.43 31wztqOV0.net
>>739
恐らく、やりたいのは
(new クラス名).メソッド名();
ってことだと思うけど、何度も使う場合は毎回newすることになるので非効率。
また、IDisposeなクラスの場合はDispose()を呼べない。
上記2つに問題ないなら使っても構わない。staticメソッドにすべきだけどね。
775:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 14:49:28.21 caNoEqSZ0.net
>それだったら、代わりにDirectory.EnumerateFiles()を使えば逐次処理出来るよ。
それなかったな。 会社がVs2008なのでw
Vs2008で.net Framework4.5とかつかえるんだろうか?
776:デフォルトの名無しさん (ブーイモ MM07-caEn)
16/12/11 14:58:46.78 Z923MDQCM.net
なきゃ実装すればいい
777:デフォルトの名無しさん (ワッチョイ cb5b-w4ID)
16/12/11 14:59:38.20 PxfwJXGz0.net
こんな感じで構造体配列の中身をIntPtrにコピーしたいんですが
どういう方法がありますか?
struct A{ int x=0,y=1,z=2; }
A a = new A();
IntPtr ptr;
Marshal.StructureToPtr(a, ptr, false);
778:765 (ワッチョイ cb5b-w4ID)
16/12/11 15:00:53.89 PxfwJXGz0.net
>>765 すいません。領域確保(AllocCoTaskMem)のところは省略してます。
779:デフォルトの名無しさん (オッペケ Sr27-w4ID)
16/12/11 15:40:06.69 pNKp5sE/r.net
List<string> list = new List<string>() {"hage", "namahage"};
List<string> list = new List<string> {"hage", "namahage"};
どっちもいけるんだけどどう違うの?
780:デフォルトの名無しさん (ワッチョイ 07cb-1E9w)
16/12/11 15:41:48.31 G916gL+V0.net
>>743
でも現実には処理が間に合わないわけじゃん
それでも一気に表示する仕様は変えないのか?
エクスプローラーではできてるのか?とか
Windowsのコピーって動作だって早く終われば進捗ウィンドウなんて出さないけど
長くかかれば進捗ウィンドウが出てくるわけよ
781:デフォルトの名無しさん (ワッチョイ d349-mlnL)
16/12/11 15:48:11.13 31wztqOV0.net
>>763
肝心な条件を後だしとか酷いな。
Directory.EnumerateFiles()は.Net 4からだけど、VS2008は.Net3.5までだな。
.Net3.5じゃ、Async/AwaitどころかTaskも使えないぞ。
>>739で用語が混じってるけど、スレッド/スレッドプール/タスクね。
782:デフォルトの名無しさん (ワッチョイ d349-mlnL)
16/12/11 15:55:26.64 31wztqOV0.net
Directory.GetFiles()は全てのファイルを取得するまで処理が戻ってこないから、バックグラウンド処理にした所で結局待たされる。
逐次処理がしたいなら、Win32API使ってDirectory.EnumerateFiles()のようなものを独自実装するしかないな。
783:765 (ワッチョイ cb5b-w4ID)
16/12/11 17:07:16.26 PxfwJXGz0.net
こんな風に構造体の配列の要素ひとつずつをIntPtrで確保した領域にコピーしようと
したのですが、こういう方向性では無理ですか?
IntPtr ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(A))*a.Length);
for(int i = 0; i < a.Length; ++i){
Marshal.StructureToPtr(a[i], ptr+i*size, false);
}
784:765 (ワッチョイ cb5b-w4ID)
16/12/11 17:20:36.88 PxfwJXGz0.net
>>771 あーこれで問題なくいけてましたwお騒がせしました。
785:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 17:56:21.30 caNoEqSZ0.net
>770
そういうことか。 それでDoEventが聞かなかったんだね。
>769
Net4をダウンロードして、参照すればいいだけかとおもっていたが
むりか?
786:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 18:00:11.20 caNoEqSZ0.net
>770
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"C:\test");
System.IO.FileInfo[] files =
di.GetFiles("*.txt", System.IO.SearchOption.AllDirectories);
//ListBox1に結果を表示する
foreach (System.IO.FileInfo f in files)
{
ListBox1.Items.Add(f.FullName); ここでキューにいれればいいやん。
}
787:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 18:06:46.94 caNoEqSZ0.net
>でも現実には処理が間に合わないわけじゃん
>それでも一気に表示する仕様は変えないのか?
キューから取り出して表示するんなら、UIがわで順次表示できるよ。
問題はUIで超重たい処理がはいるのでハング状態になるということだけ
でしょ。
UIが動けば、ブレーク中断したり任意にできる。
788:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/11 20:18:29.55 caNoEqSZ0.net
SparkはC#サポートしてないよ。C#からどうやってつかうの?
789:デフォルトの名無しさん (ワッチョイ ebdc-6LJV)
16/12/11 22:29:10.18 xUW3RgdE0.net
そんなもん別プロセスでやりゃいいでしょ
パラメータや結果の受け渡しはRPC(IPC)使ってもいいけど、今回の要件ならファイルベースでもオーバーヘッドは全く無視できる
790:デフォルトの名無しさん (ワッチョイ 07cb-1E9w)
16/12/11 22:30:49.68 G916gL+V0.net
一個一個入れて描画されてるから遅かったりして?
791:デフォルトの名無しさん (ワッチョイ d723-xm+r)
16/12/12 01:48:31.95 jfe+O/Es0.net
>>771
.NET 4.0以降ならこういうのもあるよ、Marshal.AlignedSizeOf<T>()でアライメントされるが
URLリンク(msdn.microsoft.com)
派生クラスでhandleに確保済みポインタを設定し、Initialize<T>()等でポインタ領域も指定
StructureToPtrはジェネリックメソッドでさえも非ジェネリックのラッパーっぽいので
パフォーマンスは期待できない、unsafeで良ければ構造体ポインタ使った方が良いかもね
792:デフォルトの名無しさん (ワッチョイ cb5b-w4ID)
16/12/12 02:20:55.85 JnfesTFd0.net
>>779
おぉ~情報ありがとうございます!
なるほどそういうのもあるんですね。
教えて頂いた事を参考にさせて頂いてどうやるかもうちょっと考えてみます。
793:デフォルトの名無しさん (ワッチョイ ebdc-6LJV)
16/12/12 06:39:25.29 w8oqDcFY0.net
bittableな構造体ならマネージ配列にGCHandleを割り当ててAddrOfPinnedObjectという手もあるよ
unsafeならfixedステートメントがだいたい等価
いちいちアンマネージなバッファを割り当てたり更新内容をマネージコードに書き戻したりしなくていいから楽
794:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/12 08:05:25.67 Jwz8x4f60.net
>そんなもん別プロセスでやりゃいいでしょ
>パラメータや結果の受け渡しはRPC(IPC)使ってもいいけど、今回の要件なら
>ファイルベースでもオーバーヘッドは全く無視できる
全然意味がわからない。C#でCSVを作ったとして
1.C#からScalarにクエリを送信して、
2.Sparkの処理終了を待つ
3.結果を受信する。
これをC#でプログラムして、Scalarでもプログラムするってこと?
言うのは簡単だが、、、、例でもなきゃ調べてプログラムするのに1週間はかかりそう。w
本質的な情報が欠落しているとおもうよ。こんなのは初心者には全然意味がわからない。
795:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/12 08:06:12.67 Jwz8x4f60.net
>777
こういうのを使えってことだろうか?
Mobius: C# API for Spark
796:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/12 08:10:10.92 Jwz8x4f60.net
var lines = sparkContext.TextFile(@"hdfs://path/to/input.txt");
var words = lines.FlatMap(s => s.Split(' '));
var wordCounts = words.Map(w => new KeyValuePair<string, int>(w.Trim(), 1))
.ReduceByKey((x, y) => x + y);
var wordCountCollection = wordCounts.Collect();
wordCounts.SaveAsTextFile(@"hdfs://path/to/wordcount.txt");
こんな感じでC#からSparkをコントロールしたいのだが、もっとも一般的で初心者向け
な簡単な方法はなにでしょうか?
797:デフォルトの名無しさん (ブーイモ MM2f-6LJV)
16/12/12 08:30:36.13 FdLiOBdBM.net
>>784
それを普通にScalaかPythonかJavaで書いてC#からProcess.Startで呼べばいい
なんでもC#でやる必要ない
798:デフォルトの名無しさん (オッペケ Sr27-l58V)
16/12/12 11:23:30.02 FEnMQE8Ar.net
誰も>>767に答えられないの?
799:デフォルトの名無しさん (ブーイモ MM2f-6LJV)
16/12/12 11:31:59.68 FdLiOBdBM.net
>>786
違いはない
800:デフォルトの名無しさん (アウアウオー Sa3f-ff1P)
16/12/12 11:55:48.82 DdSBjDaJa.net
どうでもいいけどここにちゃんとした説明があるな
URLリンク(msdn.microsoft.com)
801:デフォルトの名無しさん (ワッチョイ 277b-gb6D)
16/12/12 14:45:07.46 Jwz8x4f60.net
>785
なるほど。
傾向を掴むだけの場合にはいいけれども、アプトプットの表現を加工したいような
場合にはやはりC#でないと、、、となって結局はC#が必要になるような気がする。
JavaもC#も言語的にはそんなに変わらないが、インテリセンスのないようなIDE
では作業できないと思わないか?
Scalaとか触ってはみたがインテリセンスがないのでこれでは使えない。
インテリセンスがあればうろ覚え程度でもなんとかなる。
802:デフォルトの名無しさん (ワッチョイ b741-mm6H)
16/12/12 15:32:39.38 9sS+uj7w0.net
未指定だと
Javaはpublicに
C#はprivateになるのは
かなりデカイ違い
803:デフォルトの名無しさん (ワッチョイ 5b79-pq3j)
16/12/12 15:56:55.39 snQzvIqt0.net
>>790
javaはppだぞ
804:デフォルトの名無しさん (ワントンキン MMef-g0tO)
16/12/12 16:46:36.53 cpVlzpwxM.net
peek to peek ?
805:デフォルトの名無しさん (ワッチョイ 5b79-pq3j)
16/12/12 17:00:27.95 snQzvIqt0.net
package private
806:デフォルトの名無しさん (ブーイモ MM47-caEn)
16/12/12 18:52:15.45 VeOEVzI1M.net
えっJavaってIDEにインテリセンスもないのか
807:デフォルトの名無しさん (ワッチョイ 5b79-pq3j)
16/12/12 19:44:00.02 snQzvIqt0.net
>>794
Ctrl+spaceで出すか、設定からいつでも出るようにしないといけない
808:デフォルトの名無しさん (ワッチョイ 5f73-drn7)
16/12/12 23:05:44.03 dBjxs9jc0.net
Datatablのフィールドに氏名があったとして
Linqで荒川のindex(rowの位置)を取得するにはどう書けばいいのですか?
809:デフォルトの名無しさん (ワッチョイ ebdc-Ts63)
16/12/12 23:11:46.39 w8oqDcFY0.net
>>796
そんなことはしない
データソースに直接クエリするべき
810:デフォルトの名無しさん (ワッチョイ 5f73-drn7)
16/12/12 23:30:47.31 dBjxs9jc0.net
>>797
indexをforで探して別のフィールドの国語、数学の点を変えるでやっているんだけど
forじゃなくてLinqで探せないかなと思って、forよりLinqのが早い?かなと
811:デフォルトの名無しさん (ワッチョイ 6b23-WrC4)
16/12/12 23:34:13.53 /DQxiOau0.net
>>798
行数が少ないだけでスピードは大して変わらんよ
812:デフォルトの名無しさん (ワッチョイ b790-d424)
16/12/13 23:38:21.93 3IrbMGrr0.net
カレンダーを作りたいのですがフォームに表示する場合どのコントロールアイテムを使えばいいのかわかりません
使えそうなコントロールアイテムってありますか?
813:デフォルトの名無しさん (ブーイモ MM07-6LJV)
16/12/13 23:45:34.29 D1DGYHRwM.net
WebBrowserでGoogleカレンダー表示しとけ
814:デフォルトの名無しさん (ワッチョイ b790-d424)
16/12/13 23:45:54.00 3IrbMGrr0.net
すいません、質問内容を変えます
MonthCalenderアイテムのたとえば第1・3火曜日だけを色を変えたりとかってどうやるんでしょうか?
815:デフォルトの名無しさん (ワッチョイ ebdc-Ts63)
16/12/14 01:12:4
816:7.69 ID:dZsAFSxQ0.net
817:デフォルトの名無しさん (ワッチョイ d349-mlnL)
16/12/14 01:25:03.42 ymoBJubC0.net
何だろね、この強引なWEB推し。
初心者がいきなりASP.NET MVCとか無理だろ。
818:デフォルトの名無しさん (ワッチョイ 3f19-i2Au)
16/12/14 01:50:56.59 WNb69LWH0.net
webアプリってあんまり好きじゃない
819:デフォルトの名無しさん (スププ Sd2f-8RvK)
16/12/14 02:05:02.38 0k2o8obnd.net
デスクトップアプリ作りたい人にWebアプリ薦めるとか頭おかしいだろ
820:デフォルトの名無しさん (ワッチョイ 07cb-1E9w)
16/12/14 22:24:55.46 AUUgXdZT0.net
あー、どうだろ?
今時、DBにも繋がらないゴミになんか価値あるの?
って思う
メモ帳ですらgoogleでクラウド化してくれたことでやばいぐらい利便性が上がってる
821:デフォルトの名無しさん (スププ Sd2f-8RvK)
16/12/14 22:39:26.79 0k2o8obnd.net
>>807
デスクトップアプリがDBに繋がらないって意味分からん
822:デフォルトの名無しさん (ワッチョイ 3faf-i2Au)
16/12/14 22:46:30.91 iFO9XKWI0.net
デスクトップアプリでDBならSQLiteとかでもOnedriveみたいにファイルを置くだけで同期できるやつを使えば鯖なくても簡単にクラウド化できるし
ローカルのファイル書き込みと同じように使えるから初心者でも楽でいいよ
823:デフォルトの名無しさん (ワッチョイ 6b23-WrC4)
16/12/14 23:01:05.01 4HnH0eA/0.net
>>809
SQLiteは、同時書き込みサポートしていないから、当該アプリケーション専用かつ、二重起動不可にしないと何かと問題起こるでしょ
824:デフォルトの名無しさん (スププ Sd2f-8RvK)
16/12/14 23:06:38.72 0k2o8obnd.net
>>810
用途に合わせてDB選択すればいいじゃないですか
825:デフォルトの名無しさん (ワッチョイ 34cb-Wqrw)
16/12/15 00:01:01.86 I51Ec/8p0.net
>>808
クラウド的な意味で
なんでもネットに繋げて見るべきだと思うな俺は
826:デフォルトの名無しさん (スププ Sdb8-WTZK)
16/12/15 00:37:49.10 R3vgAk4Qd.net
>>812
?
827:デフォルトの名無しさん (ブーイモ MMb8-JvIx)
16/12/15 00:50:31.08 ArFpv1XpM.net
いまやC#も舞台は完全にWebに移ったからなあ
.NET Coreも正式リリースされ、C#はクラウド開発の主要技術として本格的に覇権を取りにいく時代に入った
デスクトップアプリなどという終わった技術に固執している場合ではないよ
828:デフォルトの名無しさん (ワッチョイ 9c9d-0G5/)
16/12/15 01:56:47.57 UyqFS3sy0.net
※個人の感想です
829:デフォルトの名無しさん (ワッチョイ 350c-8I6M)
16/12/15 01:58:26.76 roF9qDxe0.net
>>814
仕事でデスクトップアプリ作ることないの?
いままでデスクトップアプリだったけど、Webに移行できたアプリって例えばどういうのがあるの?
830:デフォルトの名無しさん (ワッチョイ 413c-awGI)
16/12/15 03:06:24.93 hXmFu1Hy0.net
>>816
業務アプリはWeb移行流行っただろ
デスクトップアプリは、開発ツールとしてならちょくちょくつくるね
831:デフォルトの名無しさん (スププ Sdb8-WTZK)
16/12/15 04:10:25.23 R3vgAk4Qd.net
.NET Coreって別にクラウド用じゃないんだけど
832:デフォルトの名無しさん (ワントンキン MM40-Qnvt)
16/12/15 06:03:28.59 4tPXC7shM.net
PAINT DOT NET がWebに移植されたの?
833:デフォルトの名無しさん (JP 0H57-8I6M)
16/12/15 10:17:25.60 AviUmHkiH.net
デスクトップアプリでもクラウド上のDBに接続できるし>>807は意味わからんな
MS的にAzure App ServiceとXamarinと.NET Core推しでUWP含めデスクトップアプリを捨てにかかってる感はある
834:デフォルトの名無しさん (スププ Sdb8-WTZK)
16/12/15 10:33:10.37 QVvM9ANid.net
>>820
xamarinはUWPサポートしてるんですが
835:デフォルトの名無しさん (ワッチョイ 8001-Vn9u)
16/12/15 10:42:37.80 FQrvRs280.net
会社で使う業務アプリなら、使い勝手がどうとかレスポンスがどうとか文句言っても
しょうがないからWebアプリでも仕方なしに使うけど、個人で使うならよっぽど何か
メリットがない限り、Webアプリを選ぶ事はないわな
836:デフォルトの名無しさん (ドコグロ MM1c-Wqrw)
16/12/15 11:52:17.88 JOHJeedcM.net
>>822
え?
むしろスマホも枠に入れたらwebアプリのが多くならない?
837:デフォルトの名無しさん (ドコグロ MM74-f0Z7)
16/12/15 12:11:23.13 oGetrQbmM.net
スマホアプリ全部をWebアプリに含めるなよ
838:デフォルトの名無しさん (ワッチョイ 8001-NX/j)
16/12/15 12:12:53.08 FQrvRs280.net
スマホの話をしてるつもりはないんだけどなw
839:デフォルトの名無しさん (ワンミングク MM40-BQpQ)
16/12/15 12:33:06.76 7KRIzockM.net
URLリンク(chrome.google.com)
840:デフォルトの名無しさん (ワッチョイ f2af-fzYk)
16/12/15 15:47:36.94 cs8YXCvF0.net
スマホアプリもデスクトップと同じようなものだと思ってたけど違うの?
ソシャゲー以外はゲームもそれ以外もネット無しでも動くのが多いけど
841:デフォルトの名無しさん (スププ Sdb8-WTZK)
16/12/15 16:19:58.27 QVvM9ANid.net
>>827
同じに決まってますやん
っていうかもしかして
デスクトップアプリ=通信機能なしのアプリ
Webアプリ=通信機能ありのアプリ
と思ってる人いる?
842:デフォルトの名無しさん (ワッチョイ 3976-ayWP)
16/12/15 20:22:44.73 JHzpWXH70.net
ローカルファイルの存在がある限りはデスクトップアプリなくならんよなあ
electronとかでテクノロジー的には統一されるのかもしれんが
843:デフォルトの名無しさん (ワッチョイ 39d9-0Nmv)
16/12/15 20:50:15.58 0F4R16IB0.net
アーキテクチャーの話になってきてるからスレタイ読んで方向修正しろ
844:デフォルトの名無しさん (ワッチョイ 34cb-Wqrw)
16/12/15 22:01:11.28 I51Ec/8p0.net
c#でスマフォアプリ作りたいよ!
845:デフォルトの名無しさん (スププ Sdb8-WTZK)
16/12/15 22:07:11.09 QVvM9ANid.net
>>831
どうぞどうぞ
846:デフォルトの名無しさん (ワッチョイ 3542-XOD+)
16/12/15 22:41:41.93 Uw+BYsZj0.net
>>831
つunity
847:デフォルトの名無しさん (オッペケ Sr29-I6+1)
16/12/15 23:42:14.65 FEXhH1Xvr.net
>>833
なんでそこでUnity出てくるんだよ
アプリ=2D/3Dゲームとは限らんだろ
848:デフォルトの名無しさん (アウアウイー Sa87-WqSn)
16/12/15 23:52:53.04 JZ4+gGwKa.net
>>834
つunity
849:デフォルトの名無しさん (ワッチョイ 3542-XOD+)
16/12/15 23:53:04.54 Uw+BYsZj0.net
>>834
ゲームエンジンだからってゲーム製作を強制されてるわけじゃないしマルチプラットフォーム楽だから提案しただけ
情報はそれなりに多いしC#でスマホアプリ開発したいなら余裕で候補に入ってくると思うけど
850:デフォルトの名無しさん (ドコグロ MM74-f0Z7)
16/12/15 23:55:29.59 oGetrQbmM.net
ゲームでもないのにUnityはありえないな
851:デフォルトの名無しさん (ワッチョイ 35dc-JvIx)
16/12/16 00:09:14.95 oD0nT6zl0.net
今はXamarinもタダでVSに付いてくるからな
852:デフォルトの名無しさん (ササクッテロル Sp29-DuXA)
16/12/16 14:15:42.62 +kSjzPrMp.net
>>837
Unity使ってゲームじゃないもの複数リリースしてるわ俺
853:デフォルトの名無しさん (スププ Sdb8-WTZK)
16/12/16 14:58:58.27 2fwYBe0Xd.net
変わった人ですね
854:デフォルトの名無しさん (JP 0Hf9-hLkw)
16/12/16 16:48:03.99 q/3Oja+oH.net
Xamarinってスマホ用のちょっとしたアプリをC#でちょちょいと書くくらいの用途だったら
十分使えるのかね?
855:デフォルトの名無しさん (ワッチョイ 794a-xySp)
16/12/16 17:30:52.01 3vYA7mHR0.net
>>814
CoreってまだPreviewでしょ?
856:デフォルトの名無しさん (ワッチョイ 3179-fmwP)
16/12/16 17:31:55.76 OhRUtX+J0.net
ionic2でスマホアプリ作った方が楽じゃない?
857:デフォルトの名無しさん (ワッチョイ 9523-8I6M)
16/12/16 18:33:01.02 pxUpeQjw0.net
>>842
URLリンク(www.publickey1.jp)
オープンソースの「.NET Core 1.0」、マイクロソフトが正式リリース。Windows/Linux/macOSに対応。 2016年6月28日
858:デフォルトの名無しさん (スププ Sdb8-WTZK)
16/12/16 19:33:08.33 2fwYBe0Xd.net
>>841
プログラマーのスキル次第だよ
859:デフォルトの名無しさん (ワッチョイ 34cb-rqOZ)
16/12/17 20:24:02.58 qwypf80K0.net
>>842
Cora!何ねぼけたこと言ってんだ!
860:デフォルトの名無しさん (ワッチョイ a030-0Nmv)
16/12/17 21:23:42.16 iwmBtcKB0.net
審議拒否
861:デフォルトの名無しさん (ワッチョイ bf0d-zrF5)
16/12/19 17:35:36.43 alVbxlzl0.net
無名関数をその場で実行したいのですがどうやればいいですか?
public void Hoge()
{
int fuga = 0;
//JSだと (function() { fuga++; })(fuga); みたいな書き方
() => {
fuga++;
}
Console.Write(fuga.ToString()); // 1
}
862:デフォルトの名無しさん (ワッチョイ b779-fmwP)
16/12/19 17:55:39.16 C2gHCNQF0.net
jsと同じ仕方で出来ない?
(()=>{})()
863:デフォルトの名無しさん (ワッチョイ bf0d-zrF5)
16/12/19 18:00:28.82 alVbxlzl0.net
>>849
「メソッド名が必要です」とエラーが出ます。何か間違っているのでしょうか・・・?
URLリンク(i.imgur.com)
864:デフォルトの名無しさん (ワッチョイ 9519-qvaQ)
16/12/19 18:07:22.05 /uogIQCg0.net
型が必要
new Action(() => fuga++)();
((Action)(() => fuga++)))();
865:デフォルトの名無しさん (ワッチョイ bf0d-zrF5)
16/12/19 18:22:45.50 alVbxlzl0.net
>>851
できました!
ありがとうございます!
866:デフォルトの名無しさん (アウアウオー Sa36-yl9W)
16/12/19 18:43:30.73 3c7S3m0Fa.net
何の意味がw
867:デフォルトの名無しさん (ワッチョイ b779-fmwP)
16/12/19 18:55:26.87 C2gHCNQF0.net
あっそっか
C#はscalaとかjsと違って名前で判別してるんだった
868:デフォルトの名無しさん (ブーイモ MMe5-JvIx)
16/12/19 19:16:31.85 U/zOmskaM.net
デリゲート型宣言は、イベントをオブジェクト指向に持ち込むためだけにデリゲートが存在していた時代の名残だね
今作り直したら確実に無くなるものの筆頭
869:デフォルトの名無しさん (ワキゲー MMe6-qmcu)
16/12/19 19:24:00.11 s6nMQ4X7M.net
多値がまだない今だとref/outが
870:デフォルトの名無しさん (アウアウオー Sa36-yl9W)
16/12/19 19:34:56.44 3c7S3m0Fa.net
>>855
そんなわけないでしょw
勘違いはなはだしいな
871:デフォルトの名無しさん (ブーイモ MMe5-JvIx)
16/12/19 20:16:21.66 U/zOmskaM.net
>>857
昔はデリゲートなんかほんとにイベントの裏方のカスみたいな存在だったよ
もはや死語となったマルチキャストデリゲートも今じゃありえない設計判断
872:デフォルトの名無しさん (ブーイモ MM8d-Qnvt)
16/12/19 20:27:48.59 Ph61c/PCM.net
そうなのか?Taskへの書き換えが楽だからマルチキャスト多用してるわ
873:デフォルトの名無しさん (ワッチョイ 9d23-8I6M)
16/12/19 20:38:22.46 OLcwTH7T0.net
prismのEventAggregatorでは、マルチキャストどころか多対多のイベントがサポートされている
これとprism..Unitiy使い始めると設計が根本から変わわるよね
874:デフォルトの名無しさん (ワッチョイ 35dc-JvIx)
16/12/19 20:43:17.00 t+mkU7Kd0.net
TaskならContinueWithやWhenAll使いなよ
マルチキャストだと戻り値取れないだろ?
後でTaskに乗り換えようとしてもコードが副作用だらけになってて排他処理が必要になるはずだから
置き換えはそう簡単にはいかないだろう
875:デフォルトの名無しさん (ワンミングク MM40-Qnvt)
16/12/19 20:46:00.65 cSqZiFK0M.net
いや呼び出し部はちゃんど自分でバラして戻り値取ってるよ
876:デフォルトの名無しさん (ワッチョイ 35dc-JvIx)
16/12/19 20:50:55.64 t+mkU7Kd0.net
>>862
それマルチキャスト使う意味ある?
List<Func<>>でいいじゃん
MulticastDelegateをバラすと型情報も無くなるしパフォーマンスも悪い
百害あって一理なし
877:デフォルトの名無しさん (ワッチョイ 2d5b-yrUh)
16/12/19 22:35:52.95 SUXs8zgR0.net
スレチかもしれませがすみません
C#の勉強の延長でASPでwebアプリ作ってみようかと思ってるんですがASP.NETでのwebアプリの開発って主流の一つに入るんでしょうか
878:デフォルトの名無しさん (ワッチョイ 35dc-6+SE)
16/12/19 22:41:34.98 t+mkU7Kd0.net
>>864
今から始めるならASP.NET MVCにしとけ
無印の方のASP.NET(WebForms)はドカタ技術
879:デフォルトの名無しさん (ワッチョイ 413c-bVUl)
16/12/19 23:07:17.43 MBhcE2/40.net
>>864
Webアプリで何がしたいの?
880:デフォルトの名無しさん (ワッチョイ 2d5b-yrUh)
16/12/19 23:08:48.47 SUXs8zgR0.net
>>865
ありがとうございます
ASP.NETの知識無しでMVCのほうから入っても問題ないのですか?
881:デフォルトの名無しさん (ワッチョイ 2d5b-yrUh)
16/12/19 23:13:07.51 SUXs8zgR0.net
>>866
特に決めてはいないですが、在庫管理やらの業務系が出来ればと考えてます
882:デフォルトの名無しさん (ワッチョイ 413c-bVUl)
16/12/19 23:20:50.16 MBhcE2/40.net
>>868
それなら.NET CoreじゃなくてまだFullの.NET Frameworkでいいね
883:デフォルトの名無しさん (ワッチョイ 35dc-6+SE)
16/12/19 23:53:29.04 t+mkU7Kd0.net
>>867
別物だから問題ない
.NET開発としてではなく一般的なWeb開発の技術として主流かどうかを気にしてるなら断然MVCの方がいい
いわゆるWebMVCといってWeb開発においては非常に一般的なアーキテクチャを採用してるからな
無印の方はWinFormsのようなものを無理やりWeb上に再現した変態技術だが、
お前らの独自技術はもういいからWebらしいフレームワークが欲しいというニーズに応えて「普通な」MVCができた
884:デフォルトの名無しさん (ワッチョイ 413c-bVUl)
16/12/19 23:54:58.14 MBhcE2/40.net
>>870
今どき無印とは言わねーよ
885:デフォルトの名無しさん (ワッチョイ bf49-TtuQ)
16/12/19 23:57:07.79 yUAE2IHm0.net
>>867
問題ない。
>>869
いきなりそんなこと言っても何のことだか分からんと思うぞ。
そもそもCoreのこと聞いてないし。
886:デフォルトの名無しさん (ワッチョイ 413c-bVUl)
16/12/20 00:19:37.86 woy83GfY0.net
>>872
自分で調べるだろ
わからなけりゃまた聞いてくるだろうし
今から始めるやつはそもそもWeb formsなんか対象にならないだろうから、Coreと比べるのは妥当
887:デフォルトの名無しさん (ワッチョイ 3a13-WTZK)
16/12/20 01:09:58.52 bQKX6Z8E0.net
屁理屈言うなよ
888:デフォルトの名無しさん (スプッッ Sdc8-bVUl)
16/12/20 02:18:50.01 usQ/Ng63d.net
>>874
至極まともな考えだと思うが
889:デフォルトの名無しさん (ワッチョイ 35dc-6+SE)
16/12/20 07:30:35.17 wmh5vlKz0.net
今はASP.NET自体も無印とCoreに分裂してるから紛らわしい
このジャップ国でASP.NETに入門しようとしたら平気でWebFormsの情報ばかり出てくるから
とりあえずはそこさえ間違えなきゃいいと思うけどね
いきなりCoreは日本語の情報少なくて厳しいと思う
890:デフォルトの名無しさん (ワッチョイ 2d5b-yrUh)
16/12/20 07:55:39.72 1rO91uPl0.net
>>864です
みなさんありがとうございます
大変参考になりました。聞いてよかったです
色々出して頂いたものは今から調べてみたいと思います
891:デフォルトの名無しさん (ブーイモ MM8d-3Pgg)
16/12/20 19:05:30.30 ZJa7dsMxM.net
web formsはあれはあれでよく出来てるよ
経験の浅い若手を使って業務用システムをサッと作りたいときとかね
もちろん保守は他社がやると見込める時だけだが
892:デフォルトの名無しさん (ワッチョイ 6751-g1cW)
16/12/22 23:43:30.19 GClofaGB0.net
C#を三か月前から勉強し始めました。
家でも勉強したくてパソコンにVS入れたいのですが、2015をインストールしたら,
Blend2015というのがインストールされました。
無料版ではComminityとExpressがあって、Comminityのほうがおすすめと聞いたのでそっちを入れたかったのですが・・・
Blendとはいったいどういう位置づけになるのですか?
会社ではVisualStudio2013Professionalを使っています。
893:デフォルトの名無しさん (ワッチョイ b749-AD9A)
16/12/22 23:52:13.67 x9LZEgeN0.net
>>879
VisualStudioに付いてくるおまけ。
WPFでGUIをデザインするためのツール。
Comminityを入れたんなら、Blendとは別にComminityの方も入ってるだろ。
894:デフォルトの名無しさん (ワッチョイ b749-AD9A)
16/12/22 23:53:53.81 x9LZEgeN0.net
あれ、community、だな。
895:デフォルトの名無しさん (ワッチョイ 6751-g1cW)
16/12/23 00:07:02.38 eKejh9BS0.net
>>880
communityをインストールしようとしたらなぜかBlendになってました・・・。
2015もcommunityありますよね?
ありがとうございます。インストr-ルやりなおしてみます
896:デフォルトの名無しさん (スフッ Sddf-Khx9)
16/12/23 00:13:03.88 nw5SwlgYd.net
Visual Studio入れるとBlendが付いてくる
アプリケーションの一覧にVisual Studioのフォルダが出来てないか?
897:デフォルトの名無しさん (ワッチョイ 0379-d0Xh)
16/12/23 00:15:51.67 P0PUtLY+0.net
Blend版が付いてくるのを知らなくて、普通のVS起動していたつもりがBlend起動してて、設定項目が見つからず6時間くらい無駄にした思い出
898:デフォルトの名無しさん (ワッチョイ b749-AD9A)
16/12/23 00:19:34.19 et7LM/Li0.net
>>882
Blendだけ入るって無いと思うけど。両方入っているはず。
落ち着いてメニューをよく見たら。
899:デフォルトの名無しさん (ワッチョイ 73dc-PUH/)
16/12/23 00:19:39.42 Boa5/2YS0.net
仕事で使うための勉強ならBlendなんか用無しだろ
ASP.NETとWinFormsだけやっとけばいい
900:デフォルトの名無しさん (ワッチョイ e75e-g1cW)
16/12/23 00:24:53.07 ydrXOK0X0.net
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe
>>882
必ず入っているはず。
むしろBlend版とか知らなくて、そのレス見てからサインインしたw
901:デフォルトの名無しさん (アウアウカー Sa3f-fflT)
16/12/23 15:03:31.78 8qbb8kwia.net
Coreの話
902:が出てたけど、ラズパイにwebアプリをデプロイできるの?
903:デフォルトの名無しさん (ワッチョイ 273c-GTRU)
16/12/23 15:17:21.07 ThcKA0lt0.net
>>888
ロードマップでは、ARM対応はQ4 2016 / Q1 2017ってなってた。Samsungが確か頑張ってるはず。
904:デフォルトの名無しさん (アウアウカー Sa3f-fflT)
16/12/23 17:23:34.06 9xVG4ZuTa.net
>>889
そうなのね!ありがとう
905:デフォルトの名無しさん (ワッチョイ 6751-g1cW)
16/12/23 18:46:44.52 eKejh9BS0.net
>>883,884,885,886,887
返信ありがとうございます
インストール一覧を調べてみたところcommunityも入っていました
もっと確認すべきでした・・・
どうもありごうございました。
906:デフォルトの名無しさん (ワッチョイ d7ce-agOw)
16/12/23 21:53:23.45 Lyl7nXDN0.net
余計な物も入れてくるから嫌いなんだよなあインストーラー
IDE必要ないからexeビルド環境だけ入るようなオプションない?
907:デフォルトの名無しさん (ワッチョイ efa1-YuIQ)
16/12/23 22:11:13.66 wnG5DWev0.net
csc.exeなら.NET Frameworkに含まれてんじゃないっけ
908:デフォルトの名無しさん (ワッチョイ 4779-d0Xh)
16/12/23 22:39:52.11 6njdFiip0.net
csc.exeはデフォで付いてくる
IDE入れないとコンパイラ入れられない言語とかない
909:デフォルトの名無しさん (ワッチョイ 0f7b-SerI)
16/12/23 22:43:28.69 jiSEHcxr0.net
YouTube にある、T Umezawa の「メモ帳でC#超入門 #16」
ニコ生で放送しているのか?
よく知らないけど、昨日、#16 がアップされた
910:デフォルトの名無しさん (ワッチョイ e30d-agOw)
16/12/23 22:46:42.71 8ECS/mff0.net
自作自演の宣伝きめぇ
911:デフォルトの名無しさん (ワッチョイ 4779-d0Xh)
16/12/23 22:55:02.72 6njdFiip0.net
メモ帳とかメリットなさすぎ
VSが重くて嫌ならVSCodeおすすめ
912:デフォルトの名無しさん (ブーイモ MM8f-ncxm)
16/12/23 23:04:29.79 gDLxrLVpM.net
VSは機能の割には無茶苦茶軽いと思うけどな
しかもゴッテゴテのWPFアプリなのに
913:デフォルトの名無しさん (ブーイモ MM3f-lsSM)
16/12/23 23:05:50.84 MNqe+TxRM.net
WPFが重いって無能が作り上げた先入観でしかないんだよね
914:デフォルトの名無しさん (ワッチョイ f3d6-i5Qz)
16/12/23 23:09:15.19 ejzKG2eK0.net
超低スペックなパソコンを後生大事に使い続ける貧乏人が文句言ってるだけ
915:デフォルトの名無しさん (ワッチョイ abc0-g1cW)
16/12/23 23:28:01.18 c2xEt3tE0.net
低スペPC使っているけど、VSは2010以前とそれ以降で重さが段違いだな
916:デフォルトの名無しさん (ワッチョイ 4779-d0Xh)
16/12/23 23:35:32.33 6njdFiip0.net
>>898
Eclipseに比べたらかなり軽いよね
JavaとかScalaもVSに対応してほしい
917:デフォルトの名無しさん (ワッチョイ ab3c-g1cW)
16/12/23 23:36:01.09 Fo6fBKop0.net
2017は必要なものだけで立ち上げられるんだろ?
918:デフォルトの名無しさん (ブーイモ MM3f-lsSM)
16/12/23 23:38:37.93 MNqe+TxRM.net
次はインストールも爆速になるらしいな
最近のMicrosoftさん頑張りすぎ
ORACLEも少しはMicrosoftを見習ってほしい
919:デフォルトの名無しさん (ワッチョイ 4779-d0Xh)
16/12/23 23:42:33.40 6njdFiip0.net
インストールは寝る前にするからあまり関係ないけどね
920:デフォルトの名無しさん (ブーイモ MM8f-ncxm)
16/12/23 23:43:37.75 gDLxrLVpM.net
>>899
VSの成功が証明してるようにスケーラビリティが高いのは確かだけど、
実際小さなアプリに使うには重いよ
921:デフォルトの名無しさん (ワッチョイ 4779-d0Xh)
16/12/23 23:45:24.81 6njdFiip0.net
WPFはバインドがなー
Angularとかの自動更新になれるとね
922:デフォルトの名無しさん (ワッチョイ 273c-GTRU)
16/12/24 00:09:01.03 LpJ8AJuF0.net
>>892
Cake使えば?
923:デフォルトの名無しさん (ワッチョイ ef9f-h9rX)
16/12/24 01:10:24.95 YCrD1JsG0.net
>>894
なんで自信ありそうに言いきってるの?
IDE入れないといけない言語はあるよ
924:デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)
16/12/24 09:08:23.75 dPbQS77J0.net
>>909
具体的に何よ?
925:デフォルトの名無しさん (ワッチョイ 73dc-ncxm)
16/12/24 09:26:43.36 3LTJc3r/0.net
Smalltalkとか昔のVBやDelphiとか
926:デフォルトの名無しさん (ワッチョイ 8f42-3ZJ0)
16/12/24 10:07:04.78 Uz+bz49d0.net
コンパイラ?
927:デフォルトの名無しさん (アウアウカー Sa3f-a5Nx)
16/12/24 10:09:16.39 VcKJc7+aa.net
powerbuilderもだった
928:デフォルトの名無しさん (ワッチョイ 2f23-g1cW)
16/12/24 11:28:12.62 prTI7XBj0.net
>>912
昔のVBもDelphiもコンパイラなんだけどw
929:デフォルトの名無しさん (オッペケ Srcf-qdr/)
16/12/24 13:38:48.90 HbE0faQGr.net
ウインフォームアプリ作ったんだけどインストーラーとかアップデータとかも自分で作るの?
930:デフォルトの名無しさん (ワッチョイ 273c-GTRU)
16/12/24 13:40:12.31 LpJ8AJuF0.net
>>915
ClickOnce
931:デフォルトの名無しさん (ワッチョイ ef9f-h9rX)
16/12/24 13:41:59.25 yr6q9nVG0.net
VBAとかSmall BasicとかScratchとかもそうじゃね
932:デフォルトの名無しさん (オッペケ Srcf-qdr/)
16/12/24 13:56:05.59 HbE0faQGr.net
>>916
それってオワコンなんじゃないの?
933:デフォルトの名無しさん (ブーイモ MM5f-ncxm)
16/12/24 14:01:46.96 1tLIoM8kM.net
>>918
それを言ったらWinFormsもオワコンだよ
今生きてるのはASP.NETとUWPだけ
934:デフォルトの名無しさん (ワッチョイ abc0-g1cW)
16/12/24 14:03:16.98 a9e/NRk30.net
オワコンだけど代替がないってのがね
935:デフォルトの名無しさん (ワッチョイ 379d-i5Qz)
16/12/24 14:23:05.13 2536g+Dg0.net
MSもWinFormsに回帰、注力すべき
936:デフォルトの名無しさん (ワッチョイ 2f23-g1cW)
16/12/24 14:35:55.93 prTI7XBj0.net
拡張機能からNuGetでVisualStudioInstaller入れられるの知らないのカー
937:デフォルトの名無しさん (ワッチョイ e33c-IeCC)
16/12/24 15:17:55.11 hhClfuXq0.net
並列処理を行いたいんですがどうすればいいでしょうか?
しかも複数の並列処理で同一のコントロール(TextBox1.text)
に同時に書き込めるようにしたいです(書き込む順番はきにしません)
あとそれぞれの並列処理を無限ループで繰り返し処理を行いたいと
思っております。
どなたか教えてください。どうぞよろしくお願いします
938:デフォルトの名無しさん (オッペケ Sref-AvAH)
16/12/24 15:19:37.36 JBAVj1Vvr.net
>>899
無能と言うか変化について行けない頭固い人だね。
所謂老害かな。
939:デフォルトの名無しさん (ワッチョイ 273c-GTRU)
16/12/24 15:20:33.37 LpJ8AJuF0.net
>>918
その要件を簡単に実現できる方法が他にない。
940:デフォルトの名無しさん (オッペケ Sref-AvAH)
16/12/24 15:21:12.81 JBAVj1Vvr.net
>>923
async, await 一択。
941:デフォルトの名無しさん (ワッチョイ 8f13-i5Qz)
16/12/24 15:21:23.94 XrRMaYjq0.net
>>909
たとえば?
942:デフォルトの名無しさん (ワッチョイ d7ce-agOw)
16/12/24 16:08:14.24 yMvVW4sX0.net
>>923
System.Windows.Forms.Control.Invoke経由で書き込むだけ
943:デフォルトの名無しさん (ブーイモ MM5f-ncxm)
16/12/24 16:10:19.44 RJkhT4CTM.net
>>923
ワーカースレッドから好き勝手にGUI触るとカオスになるから、Producer-Consumerで分離すれば?
複雑なことをやるならGUIからではなくデザイン(見た目じゃないよ)から入る作り方も覚えていったほうがいい
944:デフォルトの名無しさん (ワッチョイ 8f13-0LB+)
16/12/24 16:17:45.91 cCwHGfM40.net
>>928
これだな
945:デフォルトの名無しさん (ワッチョイ 73dc-ncxm)
16/12/24 16:27:12.97 3LTJc3r/0.net
>>924
悪いけど、今時WPF推しとかそれこそ老害だと思うぞ
立ち止まって周りを見てみろ
946:デフォルトの名無しさん (ワッチョイ b77b-g1cW)
16/12/24 16:28:09.91 YD9ZIllA0.net
話の流れが読めない人?
947:923 (ワッチョイ e33c-IeCC)
16/12/24 17:08:45.84 hhClfuXq0.net
みなさんありがとうございます。
自分なりに調べて以下の通りつくってみました
「3秒まってコンソールに文字列を出力する」という処理を並列で動作させたかったのですが
どうもそれぞれの処理が単体で実行されるだけで並列処理になっていないようです。
以下の処理を並列で実行できるようにするにはどうすればよろしいでしょうか?
private async void button1_Click(object sender, EventArgs e)
{
while (true)
{
await Task.Run(() => Thread.Sleep(3000));
Console.WriteLine("タスク完了");
}
}
948:デフォルトの名無しさん (オッペケ Srcf-qdr/)
16/12/24 17:10:58.57 HbE0faQGr.net
>>919
>>925
>>920
そっかあ
面倒だけど自作するか…
もうおっさんだからWinForm以外習得できん
949:デフォルトの名無しさん (オッペケ Srcf-qdr/)
16/12/24 17:12:35.93 HbE0faQGr.net
>>922
あれ…記憶にないけどインストールしてあったw
まあアップデータは自作になるか…
950:デフォルトの名無しさん (ブーイモ MM3f-TACi)
16/12/24 17:21:30.45 Jrqe8RRjM.net
>>933
その例は
「3秒まってコンソールに文字列を出力する」
ってタスクを無限個作りたいのん?
最初は2個にしておけば?
951:923 (ワッチョイ e33c-IeCC)
16/12/24 17:33:48.36 hhClfuXq0.net
>>936
はいそうです
2個でも問題ありません。
簡単なサンプルとか頂ければ大変助かります
大変恐縮ですがどうぞよろしくお願い致します
952:デフォルトの名無しさん (オッペケ Sref-AvAH)
16/12/24 17:39:03.48 JBAVj1Vvr.net
>>933
> 以下の処理
これが意味不明だけど。
十分並列にはなってる。
953:923 (ワッチョイ e33c-IeCC)
16/12/24 17:52:32.66 hhClfuXq0.net
>>938
そうなんですね。ご指摘ありがとうございます。
ただ私の想定としては、「3秒待って出力」という処理を
複数同時に開始したいと思っておりました
ですがコンソールに出力されるタイミングは3秒おきに1処理分しか
出力されず、非同期処理と変わらない処理となっているような気がします
上で示したサンプルがわかりづらくて申し訳ありませんが
タスクは2個でも3個でも同時並列で処理できれば問題ありません
大変恐縮ですがご教示頂ければと思います
954:デフォルトの名無しさん (ワッチョイ 3b3a-a3YU)
16/12/24 18:00:04.01 kAw8XX2k0.net
>>937
void TaskTest() {
Task.Run(async () => {
await Task.Delay(3000);
Console.WriteLine(DateTime.Now);
});
Task.Run(async () => {
await Task.Delay(3000);
Console.WriteLine(DateTime.Now);
});
}
955:923 (ワッチョイ e33c-IeCC)
16/12/24 18:29:36.15 hhClfuXq0.net
>>940
ありがとうございます!
ちなみにテキストボックスなどに内容を出力することって出来ますでしょうか?
これらの処理をりようして
TextBox1.Textに内容を出力する処理をそれぞれのタスクに追加すると
エラーになってしまうようです。
お手数おかけしますがよろしくおねがいします。
956:デフォルトの名無しさん (ワッチョイ 8f13-0LB+)
16/12/24 18:40:47.89 cCwHGfM40.net
>>941
>>928
957:923 (ワッチョイ e33c-IeCC)
16/12/24 18:41:21.02 hhClfuXq0.net
これだとやっぱり3秒毎に1処理実行されるだけなんですね・・・
async Task<string> TaskTest()
{
await Task.Delay(3000);
return "a";
}
private async void button1_Click(object sender, EventArgs e)
{
while (true)
{
TextBox1.Text += await TaskTest();
Application.DoEvents();
}
}
958:923 (ワッチョイ e33c-IeCC)
16/12/24 18:51:54.77 hhClfuXq0.net
>>942
ありがとうございます。
ただやっぱり並列にはなりませんでした・・・
なにがまちがってるんでしょうか・・・?
while (true)
{
await Task.Factory.StartNew(() =>
{
Invoke((MethodInvoker)(() =>
{
Thread.Sleep(3000);
TextBox1.Text += "a";
}));
});
}
959:デフォルトの名無しさん (ワッチョイ 7f94-4hBO)
16/12/24 19:04:14.66 iV5eYun00.net
while(true)で無限にTaskを作るとOutOfMemoryExceptionになるから
Parallel使って10個ずつくらいに制限して、
TextBoxへの書き込みにはProgressを使うとこんな感じ
private void button1_Click_1(object sender, EventArgs e)
{
IProgress<string> progress = new Progress<string>(text =>
{
TextBox1.Text += text;
});
Task.Run(() =>
{
while (true)
{
Parallel.For(0, 10, i =>
{
System.Threading.Thread.Sleep(3000);
progress.Report("a");
});
}
});
}
960:923 (ワッチョイ e33c-IeCC)
16/12/24 19:13:46.70 hhClfuXq0.net
ありがとうございました!大変助かりました!
お手数おかけして申し訳ありませんでした
961:923 (ワッチョイ e33c-IeCC)
16/12/24 20:17:57.50 hhClfuXq0.net
>>945
おかげさまで仕事がはかどりました
改めてありがとうございました。
ただ、ソースをよく読んでみると
Parallel.Forというのがあるので
Task使わなくても問題なさそうですね
(C#歴は1ヶ月程度なので違ってるかもしれませんが)
962:デフォルトの名無しさん (ブーイモ MM3f-TACi)
16/12/24 20:23:51.87 Jrqe8RRjM.net
>>945
Progressなんてクラスが居たのね。こいつは捗りそう。
963:デフォルトの名無しさん (ワッチョイ 7f94-4hBO)
16/12/24 20:25:53.45 iV5eYun00.net
>>947
Parallelは完了まで自スレッドをロックしてしまう
(つまり、並列ではあるけど非同期ではない)ので
UIスレッドをフリーズさせないためにはTaskとの併用が必要