Программирование >>  Программирование с использованием ajax 

1 ... 380 381 382 [ 383 ] 384 385 386 ... 396


<Ellipse.BitmapE££ect> <OuterGlowBitmapEffect GlowColor= #FFFFFFFF GlowSize= 16 /> </Ellipse.BitmapEffect> </Ellipse>

</Grid> </Window>

4. Измените код в файле Windowi. xaml. cs, как показано ниже:

using System.Windows.Shapes;

using System.ServiceModel;

using System.Windows.Media.Animation;

namespace Ch35Ex03 {

/ <summary>

/ Логика взаимодействия для Windowi.xaml / </summary>

public partial class Windowi : Window {

private AppControlService service; private ServiceHost host;

public Windowi() {

InitializeComponent();

private void Window Loaded(object sender, RoutedEventArgs e) {

service = new AppControlService (this) ; host = new ServiceHost (service) ; host.OpenO ;

private void Window Closing(object sender. System.ComponentModel.CancelEventArgs e)

host.Close 0;

internal void SetRadius (double radius, string foreTo, TimeSpan duration) {

if (radius > 200) {

radius = 200;

Color foreToColor = Colors.Red;

foreToColor = (Color)ColorConverter.ConvertFromString(foreTo) ;

catch {

Игноррфовать неудачные попытки преобразования цвета.

Duration animationLength = new Duration (duration) ;

DoubleAnimation radiusAnimation = new DoubleAnimation (

radius * 2, animationLength); ColorAnimation ColorAnimation = new ColorAnimation (

foreToColor, animationLength); AnimatableEllipse. BeginAnimation (Ellipse. HeightProperty, radiusAnimation);



AnimatableEllipse. BeginAnimation (Ellipse. WidthProperty, radiusAnixnation); ((RadialGradientBrush)AnimatableEllipse.Fill) .GradientStops [1] .BeginAnimation(GradientStop.ColorProperty, ColorAnimation);

5. Измените код в IAppControlService.es следующим образом:

[ServiceContract]

public interface lAppControlService {

[OperationContract]

void SetRadius(int radius, string foreTo, int seconds) ;

6. Измените код в AppControl Service. cs следующим образом:

[ServiceBeliavior (InstanceContextMode=InstanceContextMode . Single) ]

public class AppControlService : lAppControlService

private Windowl hostip;

public ipControlService (Windowl hostip)

this.hostip = hostApp;

public void SetRadius (int radius, string foreTo, int seconds) {

hostApp.SetRadius(radius, foreTo, new TimeSpan(0, 0, seconds));

7. Измените код в app. conf ig следующим образом:

<configuration> <system.serviceModel> <services>

<service name= Ch35Ex03.JpControlService >

<endpoint address= net.tcp: localhost:8081/ipControlService binding= netTcpBinding contract= Ch35Ex03.IJpControlService /> </service>

</services>

</system.serviceModel> </configuration>

8. Добавьте в проект новое консольное приложение по имени Ch35ExO301 lent.

9. Сконфигурируйте решение как имеющее несколько стартовых проектов, причем так, чтобы оба созданных ранее проекта запускались одновременно.

10. Добавьте в проект C]i35Ex03Client ссылку на System.ServiceModel.dll и C]i35Ex03.

11. Измените код в Program, cs следующим образом:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Ch35Ex03;

using System.ServiceModel;



namespace Ch35Ex03Client {

class Program {

static void Main(string [ ] args) {

Console.WriteLine( Press enter to begin. );

Нажмите Enter, чтобы начать работу

Console.ReadLine();

Console.WriteLine( Opening channel... );

Открытие канала

IAppControlService client =

ChannelFactory<IAppControlService>.CreateChannel( new NetTcpBinding () ,

new EndpointAddress( net.tcp: localhost:8081/AppControlService )),

Console.WriteLine( Creating sun... );

Создание солнца

client.SetRadius(100, yellow , 3) ;

Console.WriteLine( Press enter to continue. );

Нажмите Enter, чтобы продолжить

Console.ReadLine();

Console.WriteLine( Growing sun to red giant... );

Увеличение солнца до красного гиганта

client.SetRadius(200, Red , 5);

Console.WriteLine( Press enter to continue. );

Нажмите Enter, чтобы продолжить

Console.ReadLine();

Console.WriteLine( Collapsing sun to neutron star... );

Коллапс солнца в нейтронную звезду

client.SetRadius(50, AliceBlue , 2);

Console.WriteLine( Finished. Press enter to exit. );

Процесс завершен. Нажмите Enter, чтобы выйти Console.ReadLine();

12. Запустите решение. Если появится соответствующее приглашение, разблокируйте ТСР-порт брандмауэра Windows, чтобы служба WCF могла начать ожидание подключений.

13. Когда появится окно Solar Evolution (Эволюция солнца) и окно консольного приложения, нажмите в окне консольного приложения клавишу <Enter>. На рис. 35.7 показан результат, который должен получиться.

14. При желании продолжить цикл эволюции солнца снова нажмите клавишу <Enter>.

Описание полученных результатов

в данном примере мы добавили в WPF-приложение WCF-службу и использовали ее для управления анимационными эффектами элемента управления Ellipse, после чего создали простое клиентское приложение для ее тестирования. Тем, кто пока не слишком знаком с WPF, не стоит особо волноваться об XAML-коде в этом примере, поскольку здесь больше интересуют детали кода WCF



1 ... 380 381 382 [ 383 ] 384 385 386 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика