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

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

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

Re[3]: 非同期にしたいので、別AppDomainにする


(過去ログ 10 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■2081 / inTopicNo.1)  非同期にしたいので、別AppDomainにする
  
□投稿者/ 商人 (1回)-(2007/03/17(Sat) 12:13:05)

分類:[C# (Windows)] 

クライアントのファイルをFTPでサーバーに送る処理を実現したいです。
それを非同期で実現したいです。

でも、プロジェクトでは、別FTPのEXEの起動をおこなっています。

それだと、別プロセスだから、コストが高いですよね。

そういう場合に、別AppDomainで起動したら、
別プロセスよりも、有効な使い方になりますでしょうか?


この前の勉強会でも、ASP.NETが別AppDomainで起動って話してませんでしたっけ?
違いました??




引用返信 編集キー/
■2085 / inTopicNo.2)  Re[1]: 非同期にしたいので、別AppDomainにする
□投稿者/ Kazuki (7回)-(2007/03/17(Sat) 13:55:22)
そのExeは??.NET製??

FTPの機能が、APIとして提供されているなら別スレッドでその処理を呼ぶのがいいんじゃないでしょうか。

もしくは↓を参考にしてやるとか
http://www.atmarkit.co.jp/fdotnet/dotnettips/459ftpwc/ftpwc.html
引用返信 編集キー/
■2088 / inTopicNo.3)  Re[2]: 非同期にしたいので、別AppDomainにする
□投稿者/ 囚人 (75回)-(2007/03/17(Sat) 18:13:40)
Kazuki さんが仰っているように、スレッドで処理できるならスレッドが一番よいでしょう。
FTP のアプリケーションが .NET 製でないなら、別プロセス起動しか方法はないでしょうね。

例

ConsoleApplication1.exe 
public class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Console Application 1");
        RunAppDomain();
        RunThread();
    }

    private static void RunAppDomain()
    {
        AppDomain domain = AppDomain.CreateDomain("ConsoleApplication2AppDomain");
        domain.Load("ConsoleApplication2");
        domain.ExecuteAssemblyByName("ConsoleApplication2");
    }

    private static void RunThread()
    {
        Thread t = new Thread(Console2Main);
        t.Start();
    }

    private static void Console2Main()
    {
        ConsoleApplication2.Program.Main(null);
    }
}

ConsoleApplication2.exe 
namespace ConsoleApplication2
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Console Application 2");
        }
    }
}

引用返信 編集キー/
■2098 / inTopicNo.4)  Re[3]: 非同期にしたいので、別AppDomainにする
□投稿者/ HiJun (22回)-(2007/03/18(Sun) 21:12:15)
まず、非同期については、Kazukiさんや囚人さんがおっしゃるように
スレッドでやるのがベターでしょう。

>クライアントのファイルをFTPでサーバーに送る処理を実現したいです。
>それを非同期で実現したいです。
OSが記載していないので想像になりますが、おそらくOS標準について
いるFtp.exeを使っているのでしょうね。
でFTPを行う方法ですが、
1.OSの標準のFTP.exeをプロセス起動で対応する。
2.サードパーティのクラスライブラリ等を利用する。
3.Socketクラスを使用してゴリゴリ作り倒す。

後、VS6.0でよく使用していた手ですが、wininet.dllのAPIを使用すると
いうのもあります。
(でも、.NETで利用できるかはちょっと微妙です。)


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -