VB.NETにおいて、2つのプロセスを起動し、その間のデータの受け渡しを行いたいのですが、
ファイルでは速度が遅すぎて、別の手法を探しています。なるべく簡単で実装できる方法を知りたい
です。ちなみに受け渡すデータのサイズですが、数十バイト程度です。よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>度々の回答ありがとうございます。

「プロセス間通信のほうが遅い」
>とのことですが、具体的な実例などありますでしょうか?

なぜ遅いか?考えればすぐわかると思いますが。
単純なものは”速い”、複雑なものは”遅い”です。

最初の回答で書いたurlの方法が.NETでのまっとうなプロセス間通信の方法だと思います。
が、通信を行う双方のアプリを不正なアクセスから保護するために、何層にも処理の階層(レイヤー)が分かれて、それぞれに手順が定められています。

そんな複雑なことをやるよりは、単純な処理であるファイルの方が速いのはすぐに理解できますよね。#2に書いたとおり、キャッシュに乗ったらほとんどオンメモリでの処理です。

というか、テンポラリ用に、明示的にメモリ上にファイルを作ることだって不可能ではありません。


>>というか、速度を求めるのに今のWindowsで.NETを選択してる時点で間違ってるような・・・

>また、VB.NETを使用している理由ですが、現在および将来
>において、入手が可能な開発環境であるということです。

うーん、なぜ処理速度をそこまで求めるのでしたらCやC++ではないのでしょうか?という意味だったんですけど。
開発環境の入手性でしたらVC++.NETなら変わりませんが。

今のWindowsでは、.NET Frameworkは階層的にWindowsAPIの上にのっているだけです。つまり、余分なオーバーヘッドたっぷりです。

ただし、次期OSでは階層が逆になるので.NETの方が速くなる可能性もありますが。

ちなみに、一番単純で速いプロセス間通信は、DLLを使った共有メモリだと思います。ただし、.NETを使うんでしたら実現できませんが。
http://www.cisnet.or.jp/home/tsuneoka/win32sub/3 …

参考URL:http://www.cisnet.or.jp/home/tsuneoka/win32sub/3 …
    • good
    • 0

>この処理が数回なら全く問題ではないのです


が、数百回となると100ミリ秒でも問題となってきます。

うーん、単純に回数を掛けても意味が無いかと。
特にファイルなんて、OSによるキャッシュがバリバリ効きます。
ちゃんとした手順を踏んだプロセス間通信よりよっぽど速いと思います。

ところで排他や同期は考えないんですか?
プロセス間通信のオーバーヘッドよりこういうことのほうがよっぽど時間がかかることだと思うんですが。

というか、速度を求めるのに今のWindowsで.NETを選択してる時点で間違ってるような・・・

この回答への補足

度々の回答ありがとうございます。「プロセス間通信のほうが遅い」
とのことですが、具体的な実例などありますでしょうか?「業務」
なので、抽象的な「遅いと思う」では納得させることができないので、
具体的な内容があれば、それが知りたいです。

また、VB.NETを使用している理由ですが、現在および将来
において、入手が可能な開発環境であるということです。

補足日時:2005/06/03 21:37
    • good
    • 0

数十倍とのデータを受け渡すのに、ファイルでは遅いってのが良くわかりませんが。

FDか何かと勘違いしてませんか?

で、
.NET プロセス間通信
こんなキーワードで検索すれば、いろいろと出てきますが。
Googleの結果の2番目はこれ
http://www.microsoft.com/japan/msdn/thisweek/ste …



あとは、.NETで準備してるような方法で満足できないんでしたら、
1.WindowsAPIを使ってファイルマッピングを使う
2.WM_COPYDATAを使って別プロセスのウィンドウにメッセージとして送る。
3.WindowsAPIを使ってパイプ
ですかね。


ですかね。

この回答への補足

「遅い」というのが客観的な表現ではなかったため、誤解をされているようです。
簡単な実験プログラムで試験したところ、ファイルでデータの受け渡しを行うのに
かかる時間は約100ミリ秒でした。この処理が数回なら全く問題ではないのです
が、数百回となると100ミリ秒でも問題となってきます。最低でも5倍、できれ
ば10倍以上のスピードアップが必要なのです。また、Googleでの検索で出てくる
内容についても、具体的な実装には少々使えなさそうな感じがします。

補足日時:2005/06/02 21:08
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q英語で「2012年の5ヶ月間」と書きたい

「2012年の5ヶ月間、私は日本を一周した」と英語で書きたいのですが、「2012年の5ヶ月間」というのは英語でどのように書けば良いのでしょうか?

Aベストアンサー

「2012年の5ヶ月間」は「five months in 2012」と言えます。

元の文を自然に意訳するなら、

I spent five months traveling around Japan in 2012.

とするのが良いと思います。

Qカスタムコントロール作ってます(VB.NET)。VB.Net にVB.6のActiveX作成時にあったプロパティページ作成ができないようですが

タイトルどうりです。VBNETのカスタムコントロールでデザインモードにおけるフォームつまりプロパティページやビジュアルにプロパティボックスから設定できるようにしたいのですが、どうしたらできるでしょうか?VB6ではできたのですが、(Activexコントロール)。

よろしくお願いします。

Aベストアンサー

通常のプロパティと同じように、プロパティ ウィンドウに項目を表示して設定できるようにする必要があります。
具体的には、
1. カスタム コントロールのクラスに外部公開する Property プロシージャを作成して、内部で値を保存できるようにする。
2. そのプロパティの宣言部分で、プロパティ ウィンドウに表示するように指示する属性値を設定する。

こんな感じです。

参考URL:http://www.atmarkit.co.jp/fdotnet/winexp/winexp02/winexp02_01.html

Qもし、“1年間で英語をモノにしろ”と言われたらどうしますか?

ゴルファーの石川遼選手、英語で会見を行っていますが独学でマスターしたそうですね。
あれを見ていて、すごく立派だと思います。

さて、“1年間で英語をモノにしろ”と言われたら、どんな方法で英語を身に付けますか?
英会話教室ですか?
英語の教材ですか?
1年間の留学ですか?
外人を友達にして個人レッスン?・・・

絶対にできそうなのは、どれですか?

Aベストアンサー

『日常英会話パーフェクトブック』(ベレ出版)のような
一冊の本でたくさんの日常会話フレーズが出ているCD付きの本で
繰り返し聞きフレーズをひたすら頭に叩き込んで体で覚えます。

後は洋画を英語のフレーズを意識しながらたくさん観たり、
出来るだけたくさんの洋楽をカラオケのレパートリーに出来るように練習するなど
考え得る限りの方法で日頃から英語に触れ、英語の感覚を磨けるようにします。

日本語の日常会話もどこかで聞いたり読んだりした言葉を覚えてしゃべれるようになったように思います。
それならば英語もフレーズをたくさん聞いて体で覚える事でしゃべれる様になるんじゃないかな?と思います。

QVB.NET とドットNET(.NET)と違うのですか

Cをこれから勉強しようと思って、
「VISUL STUDIO 2005」という本を買って勉強中です
.NETというのが出てきて
VB、、C++、C##、J#を扱っているようです
そして
この、教えて、なんかで
よく出てくるのが、VB.NETで
.NETはあまりでてきません
そこで、この違いを知りたいのですが
よろしくお願いします

Aベストアンサー

ドットNET(.NET)というのはもっと広い概念です。
例えていうならスポーツという概念がドットNET(.NET)なら、VB.NETは巨人(C++が阪神で、C##がソフトバンクス...)というような関係になります。

.NETの概念をマイクロソフトの言葉で説明するならこちらのページの通りです。
http://www.microsoft.com/japan/net/basics/whatis.asp
噛み砕いて説明するなら.NETとは「製品」そのもののことを指す場合もありますし、「技術」のことでもあるし、「ガイドライン」や「指標」だったりもします。

つまりドットNETの話題が無いというのは、それ自体の概念が広すぎて話題にしようがないのです。
野球や巨人の問題で議論することはできても、スポーツについて語りましょうと言われてもとっかかりがありすぎて逆にないでしょ。

でVB.NETというのはそういった.NETの概念のもとで作られたプログラミング用のソフトのことで、C++.NETやJ#.NETと兄弟関係にあります。

Q短期間で、効率の良い英語学習方法を教えて下さい。

外資系の会社に入社2年目の40代。
部署が英語をあまり使用しなかったため、外資系なのに
全然、英語がダメです。
会社が買収され、急に英語の報告物や電話が多くなりました。
上司にも、英語を頑張るようにと言われました。

会話だけでなく、文章の読み書きも出来るようになりたいです。
それも、出来るだけ短期間で・・・
効率の良い学習方法を教えて下さい。

Aベストアンサー

アメリカに38年住んでいる者です。 私なりに書かせてくださいね。

短期間で、、、、ではなく、どれだけ自分のものにするか、を考えてください。 仕事に「使う」のですからこれほど「意味のある」目的はないと思います。 試験の為に(意味のある資格習得は除いて、つまり意味のない資格習得ではなく)勉強するのではなく、自分の為に(教材購入ではなく)自分が毎日少し筒「物にする」と言う事なのです。

3ヶ月で、3年で、30年で、300年で英語をマスターしよう、というのではなく、毎日自分を向上させていく、と言う事なのです。

一番手っ取り場合方法は、「今日始める」のです。 今日始めることは明日始めるより一日早く習得できるわけですね。

今日始める、と言う事は、今日文法参考書を買い求め勉強を始めるということではありません。 仕事の上で「何が自分に一番弱い」と感じさせそして一番仕事上負担になっているか、使えないのか、を今日考えるということです。

バインダーをひとつ作って、何が自分にとって「身につける」執拗のあるものなのかを詳しいことを考えずにまず羅列するのです。

分類も整理もする必要はありません。 とにかく書き出すのです。 例として、

電話会話
取次ぎ
書類
フィーリング表現
スペル
発音
LとR
日常単語
専門用語

のように重複してもいいからとにかく書き出すわけです。 ほとんどの人が何か向上させたいと思っても現実的にはっきりしていないということが多い過ぎるのです。 これによって、頭の中でもやもやしたものを取りぬき、書く事によってその事はいったん忘れてしまうことが出来るわけです。 することは、考えることではなく、リストアップすることによって、自分の弱点と思われる項目、向上させる必要があると思われる項目をどんどん「整理する為の」データを集めることから始めるわけです。

小さなノート(紙切れでもいいのです、古い名詞でもいいです)をいつも持ち歩き思いついた弱点を書くのですね。 通勤中でも、トイレの中でもそしてノートを風呂場にも持っていく心構えでリストアップすることが効率よく身につける準備でもあるし、効率よく自分のものにするための「初期訓練」「初期洗脳」でもあるわけです。

初期、と書きましたね。 今日は初期なのです。 文法書を開いて勉強し始めることは「初期ではない」のです。 

リストアップしてから今度は整理です。 一項目に関して具体的にその中で何が必要なのか、ということです。 発音と言う項目では

発音:
L&R
TH
O
リエゾン
イントネーション
真似をする
DVDを使う
聞き取り

などと書くわけです。

ここでお気づきになったと思いますが、L&Rを身につける、と言う部分とDVDを使うという部分がありますね。 目的と方法が同じ項目に混じっているわけです。 でもいいのです。 整理といってもまだ、思いついたまま書いているだけなのですから。 

また、聞き取りと言う表現を発音の項目に入っていますね。 いいのです、発音と聞き取りがつながっていると思うから含めたのであるわけで、電話会話と言う項目にも入ることも十分考えられるわけです。

今の時点ではあまりにも取り留めのないことをしていると感じるかもしれませんが、頭の中で整理するより紙の上ですることでより考えが集中するのです。

人によって、もちろん、かなり違ったリストが出来上がることになります。

上司の方は「がんばれ」というだけで具体的にはいってくれていませんね。 上司の方から何が必要なのか具体的なアドバイスを聞くこともこのリストアップの中に入れてもいいと思いますよ。 また、ボイスレコーダーの購入、onelook.comをお気に入りに入れる、音声ファイルのスピードを落として聞ける無料のNV Playerをダウンロードする、などもリストの中に入れてもいいですね。

そして、さらに、このカテの過去の質問を読み始める事も大変いいことだと思います。 (なぜか、自分では答えているのに他のサイトを紹介する人がいますがこのカテでも結構すばらしい回答をしているわけですから紹介してもいいと思うのですが。 ここのカテでは、一般的な「参考書的説明」の総合サイトと違い、ある特別の状況での問題点もあげられていますし、いろいろな人の違ったコメントも読めるわけです。 (どれが自分にあっているのかを判断することにはなりますが、結局それはそれなりに自分のためになることだと思います)

そして、最後に、非常に大切なことですが、これらをやることにどう「自分の得」になるかを書くのです。 自己向上で一番の敵はお金でも時間でも上司でも仕事でも恋人でもないのです。 いちばんの敵は「自分」なのです。 それは何かと言うと、挫折してしまう自分、意欲がなくなる自分、継続力の不足、モチベーションの不足、満足感を感じる必要があると思う自分、向上とは目に見えなくてはならないという甘える自分、なのです。 

初心忘れるべからず、継続は力なり(継続をすることで力となう、と言う意味と、継続させていく能力と言う意味)など日本語にはすばらしいアドバイスがあるのです。 「今もっている初心」を忘れてはなりません。 継続させていくことが自分が今もっている初心を持ち続けるということでありそれが直接自分に必要な英語力を持つということが実際に起こる方向へもって行くのです。

その継続させていく為にも、頭の中で漠然と考えるのではなく、はっきり「目に見えるように」「これらをやって何が自分の特になるか」を書き出すわけです。

この事に気がつかないでとにかくやればいいと考えている人が本当に多いと思います。 もちろんやるのです。 でも自分を知らないままがむしゃらにやるのは「効率よく」ということには決してつながりません。 場合によっては逆効果にもなるのです。

よって、

自己満足につながる、
人生に悔いを感じさせない
異性の持てるようになる
仕事が出来るというイメージが出る
仕事が出来る
上司に認めてもらえる
昇給につながる
昇格につながる
昇給でxxxが買える
惨めさを感じる必要がなくなる
子供からの尊敬される
海外に行ってもより楽しめる
など、誰にも見せる必要がないわけですから、何でもいいのです。 路上で外人さんに道を教えることが出来自慢になる、などでもいいのです。 外人の恋人が出来る、でもいいのです。 とにかく、自分にとって「英語が出来ることでうれしくさせるもの」をリストアップするわけですね。 

そして、上に書いた「やるべきこと」に順位をつけるのです。 何が一番自分にとって(自分がやりたいからではなく、趣味ではなく、仕事を言う周りが理由なのです)まず身につけなくてはならない事から順位をつけていくのです。 あるものは簡単に始められるものかもしれませんし、あるものは準備が必要かもしれません。 しかし、大変だと思ってもトップに必要と感じることであれば「やらなくてはならない」のですね。

では私の個人的コメントです。

文法書はあくまでも参考書として扱うことです。 文法の問題集なんて必要ないです。 とにかく仕事の為の英語力、使える英語の習得なのです。 

毎日今日から6週間はこのことだけ(必要な英語力を付ける事)だけを四六時中(4x6=24、24時間ですね。)を上手に使って、考え、そして休みをとり、また考え、休みをとるのです。 自分でシナリオ状況を考える、事もひとつですね。 電話がかかってきたら、そんな表現を使ったらいいのか、などです。 分からなかったらこのカテをフルに使うことです。

なにか、私自身も取り留めのないことを書いてしまった観がありますが、行動に移す前の自分の弱点、自分の目的、をはっきりさせ、自分のこれからの心構えを死ぬまで自分を向上させるために今日を始めて欲しいという願いから書かせてもらいました。

これでいかがでしょうか。 分かりにくい点がありましたら、補足質問してください。 

アメリカに38年住んでいる者です。 私なりに書かせてくださいね。

短期間で、、、、ではなく、どれだけ自分のものにするか、を考えてください。 仕事に「使う」のですからこれほど「意味のある」目的はないと思います。 試験の為に(意味のある資格習得は除いて、つまり意味のない資格習得ではなく)勉強するのではなく、自分の為に(教材購入ではなく)自分が毎日少し筒「物にする」と言う事なのです。

3ヶ月で、3年で、30年で、300年で英語をマスターしよう、というのではなく、毎日自分を向上させてい...続きを読む

QVBAクラスで、プロパティを使わずに、データを受け渡すには?

はじめまして。

最近、クラスモジュールを使い始めたのですが、
別のクラスに、プロパティを使わずに、
データを受け渡すには、どうすればいいのでしょうか?

たとえば、次の2つのクラスがあったとします。
(両方ともString型の読み取り専用のプロパティがある)

'クラスA
Private m_Str_A as string
Public Property Get Str_A() as String
Str_A = m_Str_A
End Property

'クラスB
Private m_Str_B as string
Public Property Get Str_B() as String
Str_B = m_Str_B
End Property

ここで、クラスAで使用したm_Str_Aのデータを
クラスBのm_Str_Bへ渡したいのですが、、、、。
別のプロパティを作ればいいだろうと考えたのですが、
それでは、値の変更が可能になってしまいます。

使用環境は、Excel2000 VBA、Windows2000です。
いろいろ調べてみたところ、他の言語か、VB.NETでない
と無理そうなことが書かれていました。
仕事場では、他の言語は使用できないので、困ってます。
何か良い方法がありましたら、よろしくおねがいします。

はじめまして。

最近、クラスモジュールを使い始めたのですが、
別のクラスに、プロパティを使わずに、
データを受け渡すには、どうすればいいのでしょうか?

たとえば、次の2つのクラスがあったとします。
(両方ともString型の読み取り専用のプロパティがある)

'クラスA
Private m_Str_A as string
Public Property Get Str_A() as String
Str_A = m_Str_A
End Property

'クラスB
Private m_Str_B as string
Public Property Get Str_B() as String
Str_B = m_Str_B
End Prope...続きを読む

Aベストアンサー

こんばんは。Wendy02です。

>実は,クラスAの下にクラスBを置きたいと考えてます。

それは、サブクラスかな?サブクラスは、VBAではないと思いますね。というか、あまりそういうケースにめぐり合いませんね。

>クラスBのプロパティの値の変更を不可にしたいのです。

発想を変えたほうがよいのではありませんか?具体的に、どういうものに使うか分れば、まったく話が変わるかもしれませんが。

Excelの中には、読み取り専用のプロパティに近いものがありますね。例えば、Now関数が、似ています。Dateは、値の代入が入れられるのに、Nowは、出来ません。あたりまえのようでいて、へんです。では、Now関数もDate関数も、値を入れていないか、というかというと、そうではありません。両方とも既に入っていて、そのような違いが起こります。

では、クラスでそれができるかというと、それはVBAでは無理ですね。VBAのクラスは、あくまでも、インスタンスを作るための雛型のようなもので、出口だけあって、入り口のないものは、定数以外は、空のままです。

VBAで、一旦、代入された値を変更されないようにするためには、クラスでは扱いません。代入値を、一度入れたきりにするには(Excelの起動から終了までの期間の間)、やはり、変数で、新たな代入を阻止するように、一般プロシージャやユーザー定義関数で作るしかないかと思うのです。

こんばんは。Wendy02です。

>実は,クラスAの下にクラスBを置きたいと考えてます。

それは、サブクラスかな?サブクラスは、VBAではないと思いますね。というか、あまりそういうケースにめぐり合いませんね。

>クラスBのプロパティの値の変更を不可にしたいのです。

発想を変えたほうがよいのではありませんか?具体的に、どういうものに使うか分れば、まったく話が変わるかもしれませんが。

Excelの中には、読み取り専用のプロパティに近いものがありますね。例えば、Now関数が、似ています。Da...続きを読む

Q「子育てなんて今思えばあっという間に過ぎる」を英語で言うと

「子育てなんて今思えばあっという間に過ぎる」を英訳するとなんとなるのでしょうか?

この場合の"あっという間に"を英語でなんと言えばいいのか分かりません。

Aベストアンサー

「子育てなんて今思えばあっという間に過ぎる」

正統派
1) When you recall your hard days of child-raising, you would say the time passed so quickly, leaving no single days to worry this and that.

簡略版(意訳しています)
2) The days of child-raising run so quick and hard, you have no time to worry this and that.

QVisualStudio.netのASP.NET WebアプリケーションでExcelデータを読み出す

VisualStudio.netで、Excelファイルからデータを取り出し、
IISサーバに載せて、インターネットで見られるようにするプログラムを
勉強しています。

参考書を参考にして、
VisualStudio.netのWindowsアプリケーションで
Excelファイルからデータを呼び出して表示するプログラムを
作ったところ、うまくいきました。
それを、ASP.NET Webアプリケーションでやったところ、
エラーメッセージが出て、ブラウザ上で成功しません。

エラーメッセージは、
「アプリケーションでサーバー エラーが発生しました。
ActiveX コンポーネントを作成できません。」
ということで、
ソースエラーでは
「行 49: myXls = CreateObject("Excel.Application")」
がエラーの原因のようです。

これは、VisualStudio.netの開発状況の設定の問題でしょうか?
あるいはサーバの設定の問題でしょうか?
それともプログラム自体の間違いでしょうか?

初歩的な質問で恐縮ですが、一人ではなかなか解決しないので
どうぞよろしくお願いいたします。

VisualStudio.netで、Excelファイルからデータを取り出し、
IISサーバに載せて、インターネットで見られるようにするプログラムを
勉強しています。

参考書を参考にして、
VisualStudio.netのWindowsアプリケーションで
Excelファイルからデータを呼び出して表示するプログラムを
作ったところ、うまくいきました。
それを、ASP.NET Webアプリケーションでやったところ、
エラーメッセージが出て、ブラウザ上で成功しません。

エラーメッセージは、
「アプリケーションでサーバー エラーが発生しま...続きを読む

Aベストアンサー

>あるいはサーバの設定の問題でしょうか?

はい、権限の問題でしょう。

>それともプログラム自体の間違いでしょうか?

推奨された手法ではありませんね。

>一人ではなかなか解決しないので

それは言い訳で、googleで検索すれば解決するでしょう。

http://www.users.gr.jp/ml/archive/aspx/429.asp
http://support.microsoft.com/default.aspx?scid=kb;ja;JP257757
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q278973

Q英語で1時間の講義は、独語で1時間半かかりますか?

英語を独語に翻訳すると、一般に文章の長さがかなり長くなります。例えば、1.5倍くらいになるのではないでしょうか?

もし、そうだとすると、英語で1時間かかる講義は、独語では、1時間半かかるのでしょうか?

Aベストアンサー

文章にして少し長くなっても、ヨーロッパ語を比べる時は、講義の長さはほとんど差がないと考えて差し支えありません。個人差はありますが。それは、この語族は重要な語句でないところは(冠詞など)はほとんど発音しないので差がでません。日本語と英語などを比べるとかなり差があると考えられます。日本文化は話すにしても、日本舞踊、雅楽、能などゆっくりが上品との伝統があります。しかし、日本語は省略(主語など)が多いので、英語と日本語の講義を比べても事実上はほとんど差がないと考えてよいでしょう。

Q.NETでプロセスの一覧を取得

現在実行されてるプロセスの一覧を取得したいのですがどのようにすればよいでしょうか?

また、ほかのWin32APIの機能を.NETで利用するための関数をまとめてあるようなものは無いでしょうか?

Aベストアンサー

>現在実行されてるプロセスの一覧を取得したいのですが
>どのようにすればよいでしょうか?

System.Diagnostics.Process.GetProcesses
を使用する。


>また、ほかのWin32APIの機能を.NETで利用するための
>関数をまとめてあるようなものは無いでしょうか?

Win32APIと.NET Framework APIの対応表
http://www.microsoft.com/japan/msdn/net/general/win32map.asp

参考URL:http://www.microsoft.com/japan/msdn/net/general/win32map.asp


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング