C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■83366 / 5階層)  これらの引数で呼び出されるアクセス可能なNewがないため・・
□投稿者/ 魔界の仮面弁士 (1203回)-(2017/03/19(Sun) 15:06:10)
No83365 (惹起 さん) に返信
> MultiProgram_run = New Thread(AddressOf Program_runxx) With {.IsBackground = True}
> MultiProgram_run.Start(hiki)
先ほどと同様に
 Dim t As New Thread(Sub() Program_runxx(hiki)) With {.IsBackground = True}
 t.Start()
では駄目ということでしょうか。もしも ThreadStart デリゲートでは都合が悪いのなら、
素直に ParameterizedThreadStart デリゲートで受け渡すのが妥当かと思います。


> それとCallByName メソッドというのは何でしょうか?
> これを使ったWshShell オブジェクトの呼び出し方をできれば教えていただけないでしょうか?
使用例はヘルプに書かれていますので、それを WshShell オブジェクトに適用してみてください。
全く分からないのであれば、CreateObject でレイトバインド呼び出しにしたりせず、
"Windows Script Host Object Model" を参照設定した上で、素直にアーリーバインドで呼ぶべきかと。

ただし先ほども書きましたが、そもそも VB.NET から WshShell を呼ぶことはお奨めしません。
パフォーマンスも悪いですし、呼び出しの手間もかかるだけでメリットがありません。
マルチスレッド環境からの利用を想定しているのであれば尚の事。
(WshShell は Single Thread Apartment モデルのコンポーネントです)


一応、WshShell によるデスクトップパスの取得コードも書いておきますが、
素直に .NET Framework の標準機能で取得するべきかと思いますよ。


===== .NET Framework でデスクトップのパスを取得するための標準的なコード =====
Dim desktopFolderPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)


===== VB ランタイムを用いてデスクトップのパスを取得するためのコード =====
Dim desktopFolderPath As String = My.Computer.FileSystem.SpecialDirectories.Desktop



===== WshShell を参照設定してデスクトップのパスを取得するコード =====
'要 COM 参照設定 [Windows Script Host Object Model]
Dim wshShell As New IWshRuntimeLibrary.WshShell()
Dim wshFolders As IWshRuntimeLibrary.IWshCollection = wshShell.SpecialFolders
Dim targetName As Object = "Desktop"

Dim desktopFolderPath As String = DirectCast(wshFolders.Item(targetName), String)

'COM コンポーネントの解放処理
System.Runtime.InteropServices.Marshal.ReleaseComObject(wshFolders)
System.Runtime.InteropServices.Marshal.ReleaseComObject(wshShell)


===== CallByName 経由の呼び出しにて WshShell からデスクトップのパスを取得するコード =====
Dim wshShell As Object = CreateObject("WScript.Shell")
Dim wshFolders As Object = CallByName(wshShell, "SpecialFolders", CallType.Get)

Dim desktopFolderPath As String = DirectCast(CallByName(wshFolders, "[DispId=0]", CallType.Get, "Desktop"), String)

'COM コンポーネントの解放処理
System.Runtime.InteropServices.Marshal.ReleaseComObject(wshFolders)
System.Runtime.InteropServices.Marshal.ReleaseComObject(wshShell)
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[4]: これらの引数で呼び出されるアクセス可能なNewがないた.. /惹起 →Re[6]: これらの引数で呼び出されるアクセス可能なNewがないた.. /惹起
 
上記関連ツリー

これらの引数で呼び出されるアクセス可能なNewがないため・・ / 惹起 (17/03/18(Sat) 22:04) #83350
Re[1]: これらの引数で呼び出されるアクセス可能なNewがないた.. / shu (17/03/19(Sun) 01:54) #83359
  └ Re[2]: これらの引数で呼び出されるアクセス可能なNewがないた.. / 惹起 (17/03/19(Sun) 10:19) #83360
    └ Re[3]: これらの引数で呼び出されるアクセス可能なNewがないた.. / 魔界の仮面弁士 (17/03/19(Sun) 14:08) #83364
      └ Re[4]: これらの引数で呼び出されるアクセス可能なNewがないた.. / 惹起 (17/03/19(Sun) 14:18) #83365
        └ これらの引数で呼び出されるアクセス可能なNewがないため・・ / 魔界の仮面弁士 (17/03/19(Sun) 15:06) #83366 ←Now
          └ Re[6]: これらの引数で呼び出されるアクセス可能なNewがないた.. / 惹起 (17/03/19(Sun) 15:10) #83367 解決済み
            ├ Re[7]: これらの引数で呼び出されるアクセス可能なNewがないた.. / 惹起 (17/03/19(Sun) 15:12) #83368
            │├ Re[8]: これらの引数で呼び出されるアクセス可能なNewがないた.. / 惹起 (17/03/19(Sun) 16:26) #83369
            ││└ Re[9]: これらの引数で呼び出されるアクセス可能なNewがないた.. / 惹起 (17/03/19(Sun) 16:29) #83370
            ││  └ Re[10]: これらの引数で呼び出されるアクセス可能なNewがない.. / 惹起 (17/03/19(Sun) 16:30) #83371
            ││    └ Re[11]: これらの引数で呼び出されるアクセス可能なNewがない.. / 惹起 (17/03/19(Sun) 16:46) #83372
            │├ Re[8]: これらの引数で呼び出されるアクセス可能なNewがないた.. / Azulean (17/03/19(Sun) 17:02) #83373
            │└ Re[8]: これらの引数で呼び出されるアクセス可能なNewがないた.. / 魔界の仮面弁士 (17/03/19(Sun) 18:32) #83375
            └ Re[7]: これらの引数で呼び出されるアクセス可能なNewがないた.. / 魔界の仮面弁士 (17/03/19(Sun) 18:20) #83374
              └ Re[8]: これらの引数で呼び出されるアクセス可能なNewがないた.. / 惹起 (17/03/19(Sun) 19:55) #83376
                ├ Re[9]: / Azulean (17/03/19(Sun) 22:04) #83377
                └ Re[9]: これらの引数で呼び出されるアクセス可能なNewがないた.. / 魔界の仮面弁士 (17/03/19(Sun) 23:52) #83378
                  └ Re[10]: これらの引数で呼び出されるアクセス可能なNewがない.. / 惹起 (17/03/21(Tue) 10:22) #83400

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信