ASP.NET网站制作之Silverlight中同步伐用WebClient的办理...
效率会有不少的变化。而实际上java是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。代码以下:复制代码代码以下:
privatevoidbutton2_Click(objectsender,RoutedEventArgse)
{
Service1Clientsc=newService1Client();
sc.DoWorkCompleted+=newEventHandler<DoWorkCompletedEventArgs>(sc_DoWorkCompleted);
sc.DoWorkAsync(textBox1.Text);
}
voidsc_DoWorkCompleted(objectsender,DoWorkCompletedEventArgse)
{
textBox2.Text=e.Result;
}
如果你的挪用十分庞大的话,好比当这个挪用完成的时分入手下手下一个挪用,然后又举行下一个挪用,各个挪用之间存在联系关系干系的话,一向XX_DoWorkCompleted会让你头年夜,而且倒霉于代码的办理。若碰着过如许的成绩的伴侣必定很但愿假如可以同步伐用就行了,这篇文章将帮到你。大概如今不必要,等你必要的时分记得用就好了,别像我现在那样难为的不可。
次要是必要援用一个类库的成绩,这个类库是本国人写的,称号为DanielVaughan.dll,下载完以后,起首必要在项目中增加对它的援用,以下图,
然后在程序中增加对两个空间的援用,以下图:
将本来的增加botton1事务:
复制代码代码以下:
privatevoidbutton1_Click(objectsender,RoutedEventArgse)
{
stringdd=textBox1.Text;
stringres="NULL";
ThreadPool.QueueUserWorkItem(delegate
{
Service1sv=ChannelManager.Instance.GetChannel<Service1>();
/*PerformsynchronousWCFcall.*/
res=SynchronousChannelBroker.PerformAction<string,string>(sv.BeginDoWork,sv.EndDoWork,dd);
Dispatcher.BeginInvoke(delegate
{
textBox2.Text+="
同步伐用--"+res+"
";
});
});
}
如许就能够完成对WebClient的同步伐用了,当你必要联系关系挪用WebClient3次以上的时分能够思索利用这个类库,假如只是复杂的挪用下的话,没有需要利用。
页面全体代码:
复制代码代码以下:
<UserControlx:Class="SilverlightApplication2.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"d:DesignWidth="400"xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input"Width="640"Height="480">
<Gridx:Name="LayoutRoot">
<Grid.Background>
<LinearGradientBrushEndPoint="0.443,0.621"StartPoint="0.443,-2.509">
<GradientStopColor="#FF5C6768"/>
<GradientStopColor="White"Offset="1"/>
</LinearGradientBrush>
</Grid.Background>
<ButtonContent="同步伐用服务"Height="40"HorizontalAlignment="Left"Margin="67,98,0,0"Name="button1"VerticalAlignment="Top"Width="120"Click="button1_Click"/>
<dataInput:LabelHeight="50"HorizontalAlignment="Left"Margin="67,188,0,0"Name="label2"VerticalAlignment="Top"Width="46"Content="形态:"FontSize="16"/>
<TextBoxHeight="40"HorizontalAlignment="Left"Margin="165,27,0,0"Name="textBox1"VerticalAlignment="Top"Width="300"FontSize="16"/>
<TextBoxHeight="100"HorizontalAlignment="Left"Margin="146,188,0,0"Name="textBox2"VerticalAlignment="Top"Width="400"FontSize="16"TextWrapping="Wrap"Text="还没有挪用服务"/>
<ButtonContent="异步伐用服务"Height="40"HorizontalAlignment="Left"Margin="346,98,0,0"Name="button2"VerticalAlignment="Top"Width="120"Click="button2_Click"/>
<dataInput:LabelHeight="40"HorizontalAlignment="Left"Margin="67,27,0,0"Name="label1"VerticalAlignment="Top"Width="92"FontSize="16"Content="输出文本:"/>
</Grid>
</UserControl>
处置程序全体代码:
复制代码代码以下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Net;
usingSystem.Windows;
usingSystem.Windows.Controls;
usingSystem.Windows.Documents;
usingSystem.Windows.Input;
usingSystem.Windows.Media;
usingSystem.Windows.Media.Animation;
usingSystem.Windows.Shapes;
usingSilverlightApplication2.ServiceReference1;
usingSystem.Threading;
usingDanielVaughan;
namespaceSilverlightApplication2
{
publicpartialclassMainPage:UserControl
{
publicMainPage()
{
InitializeComponent();
UISynchronizationContext.Instance.Initialize(Dispatcher);
}
privatevoidbutton1_Click(objectsender,RoutedEventArgse)
{
stringdd=textBox1.Text;
stringres="NULL";
ThreadPool.QueueUserWorkItem(delegate
{
Service1sv=ChannelManager.Instance.GetChannel<Service1>();
/*PerformsynchronousWCFcall.*/
res=SynchronousChannelBroker.PerformAction<string,string>(sv.BeginDoWork,sv.EndDoWork,dd);
Dispatcher.BeginInvoke(delegate
{
textBox2.Text+="
同步伐用--"+res+"
";
});
});
}
privatevoidbutton2_Click(objectsender,RoutedEventArgse)
{
Service1Clientsc=newService1Client();
sc.DoWorkCompleted+=newEventHandler<DoWorkCompletedEventArgs>(sc_DoWorkCompleted);
sc.DoWorkAsync(textBox1.Text);
}
voidsc_DoWorkCompleted(objectsender,DoWorkCompletedEventArgse)
{
textBox2.Text+="异步伐用--"+e.Result+"
";
}
}
}
Service代码:
复制代码代码以下:
usingSystem;
usingSystem.Linq;
usingSystem.Runtime.Serialization;
usingSystem.ServiceModel;
usingSystem.ServiceModel.Activation;
namespaceSilverlightApplication2.Web
{
publicclassService1
{
publicstringDoWork(stringaa)
{
//在此处增加操纵完成
return"挪用服务完成,前往你输出的值:"+aa;
}
//在此处增加更多操纵并利用标志它们
}
}
程序运转截图:
1.
2.
3.
接待人人配合切磋,以为好的话请保举下。自己手艺程度无限,若有不敷的地方,还请园友多多品评斧正,感谢。
来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着! 可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 那么,ASP.Net有哪些改进呢? 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 众所周知,Windows以易用而出名,也因此占据不少的服务器市场。 在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
页:
[1]