首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

同时执行两个方法有关问题请问

2012-12-15 
同时执行两个方法问题请教一个方法OpenFile()(带一个string类型参数)另一个 SendExcel(hssfworkbook,

同时执行两个方法问题请教
一个方法OpenFile("")(带一个string类型参数)
另一个 SendExcel(hssfworkbook, "")) (带一个HSSFWorkbook类型的对象,和一个string类型参数)

两个方法在不同的地方。想在同一地方执行完一个之后执行另一个。

用线程委托都行,只要能实现效果就可以。
[最优解释]

引用:
引用:C# code??123456789101112131415161718        void FunctionA(string s)        { }        void FunctionB(string s)        { }         void Main()        {            Actio……

同步和异步没区别?
回调和顺序执行没区别?
问a();b();这样的代码能根据a()的结果来确定b()执行与否吗?
a()异步会单开线程,a();b();这样的代码能让a()异步完成后再执行b()吗?
[其他解释]
 class Program
     {
         static void Main(string[] args)
         {
             new Action(() => { }).BeginInvoke(new AsyncCallback(Call), null);
             a();
             Console.ReadLine();
         }
         static void Call(IAsyncResult res)
         {
             if (res.IsCompleted)
                 b();
         }
         static void a()
         {
             for (int i = 0; i < 100000; i++)
                 Console.Write("a");
         }
         static void b()
         {
             for (int i = 0; i < 100000; i++)
                 Console.Write("b");
         }
     }
[其他解释]
用回调函数就可以了
[其他解释]
引用:
引用:异步调用就行了


异步调用的话,这个HSSFWorkbook类型的对象该通过何种方式传过来呢?


可以声明为成员变量(方法外面)或者自定义事件参数类
同时执行可以用多线程,然后Join,或者用ManaulResetEvent来控制
[其他解释]
加锁加锁加锁加锁
[其他解释]
OpenFile("");
SendExcel(hssfworkbook, ""));
------其他解决方案--------------------


引用:
加锁加锁加锁加锁


如何做?
[其他解释]
        void FunctionA(string s)
        { }
        void FunctionB(string s)
        { }

        void Main()
        {
            Action ac = () => { FunctionA("A"); };
            AsyncCallback callback = new AsyncCallback(CallbackFn);
            ac.BeginInvoke(callback, null);
        }
        void CallbackFn(IAsyncResult ar)
        {
            if (ar.IsCompleted)
            {
                FunctionB("B");
            }
        }

[其他解释]
异步调用就行了
[其他解释]
委托会不会,如果不会就百度一下,很简单的。。。。。你这个问题用委托超爽!
[其他解释]
引用:
C# code??123456789101112131415161718        void FunctionA(string s)        { }        void FunctionB(string s)        { }         void Main()        {            Action ac = () => { Func……

这代码和
a();
b();
没有区别哦。
[其他解释]
devmiao 你可真逗
[其他解释]
如果a()和b()只是单纯的业务代码,不包含线程同步代码,你完成一个异步回调我看看
[其他解释]
引用:
引用:引用:C# code??123456789101112131415161718        void FunctionA(string s)        { }        void FunctionB(string s)        { }         void Main()       ……

没有区别。你的写法永远是a()执行完了再执行b()
a()和b()并没有同时执行。

等价于
a();
b();

要说优势,就是凭空多写了好多行。
[其他解释]
a();b();当然可以根据a()的结果执行b()

if (a() == xxx)
    b();

不要学了复杂的,简单的都不会了,那还不如不学呢。
------其他解决方案--------------------


引用:
引用:引用:引用:C# code??123456789101112131415161718        void FunctionA(string s)        { }        void FunctionB(string s)        { }        ……

那你给的代码还报错误呢,笑话。知道什么叫示意代码吗?根据AsyncResult的结果确定动作不久完了吗?
[其他解释]
引用:
a();b();当然可以根据a()的结果执行b()

if (a() == xxx)
    b();

不要学了复杂的,简单的都不会了,那还不如不学呢。

你的写法是a()b()吗?
再说a那里直到b是什么东西?还得加控制逻辑还耦合在一起还不如把b省略掉包含到a里面呢
[其他解释]
引用:
a();b();当然可以根据a()的结果执行b()

if (a() == xxx)
    b();

不要学了复杂的,简单的都不会了,那还不如不学呢。

“一个方法OpenFile("")(带一个string类型参数)
 另一个 SendExcel(hssfworkbook, "")) (带一个HSSFWorkbook类型的对象,和一个string类型参数)
 
两个方法在不同的地方。想在同一地方执行完一个之后执行另一个。
 
用线程委托都行,只要能实现效果就可以。 ”
你能根据上面这段文字确定楼主想要的就是你的a()b()答案吗?你能确定楼主问的就是先a()后b()的问题吗?

[其他解释]
该回复于2012-12-02 14:03:42被版主删除
[其他解释]
引用:
本帖最后由 caozhy 于 2012-12-02 13:27:40 编辑
            引用:a();b();当然可以根据a()的结果执行b()

if (a() == xxx)
    b();

不要学了复杂的,简单的都不会了,那还不如不学呢。
“一个方法OpenFile("")(带一个string类型……

这要看怎么理解“不同的地方“”同一地方”这样矛盾的表达到底是什么意思了。
也许lz就是把简单的问题想复杂了呢。
可不能说人家白痴。
[其他解释]
该回复于2012-12-02 14:02:45被版主删除
[其他解释]
该回复于2012-12-02 14:02:34被版主删除
[其他解释]
引用:
C# code??



123456789101112131415161718

        void FunctionA(string s)         { }         void FunctionB(string s)         { }           void Main()         {             Action ac = () => ……





关键是有个 HSSFWorkbook类型的对象 的参数要传过来。不是单一个值类型的string或int之类(这个我也已经实现了,主要是那个类型的对象不知道该怎么传过来)。 我是用的线程。 用委托也还是会有同样的参数问题。
[其他解释]
该回复于2012-12-02 14:43:53被管理员删除
[其他解释]
引用:
异步调用就行了



异步调用的话,这个HSSFWorkbook类型的对象该通过何种方式传过来呢?
[其他解释]
引用:
class Program


     {
         static void Main(string[] args)
         {
             new Action(() => { }).BeginInvoke(new AsyncCallback(Call), null);
             a();
             Console.Re……


++1
[其他解释]
引用:
引用:C# code??



123456789101112131415161718

        void FunctionA(string s)         { }         void FunctionB(string s)         { }           void Main()         ……

你把代码给我
[其他解释]
引用:
用回调函数就可以了



和我做梦时想到的方法一模一样!

热点排行