读书人

当主线程去访问一个静态类的方法而刚

发布时间: 2013-11-14 22:02:51 作者: rapoo

当主线程去访问一个静态类的方法,而刚好这个方法是要从网络上取得返回值的,这时会报错。那这个静态类方法里面应该如何来写呢?万分感谢
比如我有类


public static NetHelper
{
public static getVersion()
{
int version = getNetVersion();//这里从网络上取得网上的版本
}
}

上面的类在线程中调用是没有问题的,但在主线程调用就会出错
那在不更改主线程业务的情况下,
如何修改这个GetVersion方法,那他可以在主线程,也可以在子线程中调用呢?

万分感谢
[解决办法]
先说清楚报什么错
[解决办法]
试下用委托看行不行
[解决办法]
这样试试
        public static class NetHelper
{
internal sealed class proxy
{
private object waitLock = new object();
private int version;
private bool isValue;
private void getNetVersion()
{
version = NetHelper.getNetVersion();
Monitor.Enter(waitLock);
try
{
isValue = true;
Monitor.Pulse(waitLock);
}
finally { Monitor.Exit(waitLock); }
}
private int wait()
{
Monitor.Enter(waitLock);
try
{
if (!isValue) Monitor.Wait(waitLock);
}
finally { Monitor.Exit(waitLock); }
return version;
}
public static int GetNetVersion()
{
proxy proxy = new proxy();
new Thread(proxy.getNetVersion).Start();//当然最好是丢在线程池里面
return proxy.wait();
}
}
private static int getNetVersion() { return 0; }//这里从网络上取得网上的版本


public static void getVersion()
{
int version = proxy.GetNetVersion();
Console.WriteLine(version.toString());
}
}


[解决办法]
在android里面,你去网络访问获取版本号的时候需要新开一个线程去做

读书人网 >C#

热点推荐