日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WF4B1 的有返回值的Activity,Bookmark,有返回值Bookmark

發布時間:2025/4/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WF4B1 的有返回值的Activity,Bookmark,有返回值Bookmark 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WF4B1 的有返回值的Activity,Bookmark,有返回值Bookmark

?

目錄

1????NativeActivity<T>????1

1.1????定義有返回值的Activity????1

1.2????使用????1

2????Bookmark說明????2

3????Bookmark????2

3.1????定義Activity????2

3.2????定義工作流????2

3.3????宿主????3

3.4????結果????3

4????Bookmark(有返回值)????3

4.1????定義Activity????3

4.2????定義工作流????4

4.3????宿主????4

4.4????結果????5

?

?

NativeActivity<T>

?

類名:System.Activities.NativeActivity<TResult>

基類:System.Activities.WorkflowElement<TResult>

文件: System.Activities.dll

類型:abstract (void Execute(System.Activities.ActivityExecutionContext context))

?

定義有返回值的Activity

場景說明:有兩個[Int]參數v1,v2,返回值為v1+v2

?

public class myActivity<T> : NativeActivity<int>

{

public System.Activities.InArgument<int> v1

{ set; get; }

?

public System.Activities.InArgument<int> v2

{ set; get; }

?

protected override void Execute(ActivityExecutionContext context)

{

int r =(int)v1.Get(context) + (int)v2.Get(context);

this.Result.Set(context, r);

}

}

?

說明:

當在設計器中添加有返回值的Activity時,會出現一個對話框,要求指定返回值的類型

?

使用

流程

宿主

WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());

?

myInstance.Run();

?

System.Console.Read();

結果

?

Bookmark說明

Bookmark可使用流程Idle并觸發流程的OnIdle

Bookmark

?

?

要定義具備Bookmark的Activit,可從 NativeActivity繼承

?

類名:System.Activities.NativeActivity

基類:System.Activities.WorkflowElement

文件: System.Activities.dll

類型:abstract (void Execute(System.Activities.ActivityExecutionContext context))

?

定義Activity

?

public class myBookmark : NativeActivity

{

?

public string bookmarkName { get; set; }

protected override void Execute(ActivityExecutionContext context)

{

context.CreateNamedBookmark(bookmarkName);

}

}

?

?

定義工作流

<p:Activity mc:Ignorable=""

x:Class="WorkflowConsoleApplication1.Sequence2"

xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities"

xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities"

xmlns:w="clr-namespace:WorkflowConsoleApplication1;assembly=WorkflowConsoleApplication1"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

>

<p:Sequence >

<p:WriteLine DisplayName="WriteLine:begin">["begin"]</p:WriteLine>

<w:myBookmark bookmarkName="mywait" />

<p:WriteLine DisplayName="WriteLine:end">["end"]</p:WriteLine>

</p:Sequence>

</p:Activity>

?

宿主

<Window x:Class="WpfApplication1.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" Height="300" Width="300">

<StackPanel>

<Button Content="啟動" Height="23" Name="button1" Width="75" Click="button1_Click" />

<Button Content="繼續" Height="23" Name="button2" Width="75" Click="button2_Click" />

?

</StackPanel>

?

</Window>

WorkflowInstance myInstance;

private void button1_Click(object sender, RoutedEventArgs e)

{

myInstance = new WorkflowInstance(new Sequence2());

myInstance.OnIdle += idel;

myInstance.Run();

?

}

IdleAction idel()

{

System.Console.WriteLine("等待提交.....");

return IdleAction.Nothing;

}

?

private void button2_Click(object sender, RoutedEventArgs e)

{

myInstance.ResumeBookmark("mywait",null);

}

結果

?

Bookmark(有返回值)

要定義具備有返回值的Bookmark Activit,可從 NativeActivity<T>繼承

?

類名:System.Activities.NativeActivity<TResult>

基類:System.Activities.WorkflowElement<TResult>

文件: System.Activities.dll

類型:abstract (void Execute(System.Activities.ActivityExecutionContext context))

?

定義Activity

public sealed class bookmark<T> : NativeActivity<T>

{

public bookmark()

: base()

{

}

?

public string bookmarkName { get; set; }

?

protected override void Execute(ActivityExecutionContext context)

{

context.CreateNamedBookmark(bookmarkName, new BookmarkCallback(bookmarkCallback));

?

}

?

void bookmarkCallback(ActivityExecutionContext context, Bookmark bookmark, object obj)

{

this.Result.Set(context, (T)obj);

?

}

}

?

定義工作流

<p:Activity mc:Ignorable=""

x:Class="myBookmarks.Sequence1"

xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design"

xmlns:m="clr-namespace:myBookmarks;assembly=myBookmarks"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities"

xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<p:Sequence>

<p:Sequence.Variables>

<p:Variable x:TypeArguments="x:String" Name="rs" />

</p:Sequence.Variables>

<p:WriteLine DisplayName="開始">["請提交意見"]</p:WriteLine>

<m:bookmark x:TypeArguments="x:String" DisplayName="等待意見" Result="[rs]" bookmarkName="mywait" />

<p:WriteLine DisplayName="顯示結果">[rs]</p:WriteLine>

</p:Sequence>

</p:Activity>

?

宿主

<Window x:Class="WpfApplication1.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" Height="300" Width="300">

<Canvas>

<Button Canvas.Left="27" Canvas.Top="31" Content="啟動流程" Height="23" Name="button1" Width="75" Click="button1_Click" />

<Button Canvas.Left="27" Canvas.Top="111" Content="繼續" Height="23" Name="button2" Width="75" Click="button2_Click" />

<TextBox Canvas.Left="123" Canvas.Top="112.157" Height="23" Name="textBox1" Width="120" />

</Canvas>

</Window>

WorkflowInstance myInstance;

private void button1_Click(object sender, RoutedEventArgs e)

{

myInstance = new WorkflowInstance(new Sequence1());

myInstance.OnIdle += idel;

myInstance.Run();

}

?

IdleAction idel()

{

System.Console.WriteLine("等待提交.....");

return IdleAction.Nothing;

}

?

private void button2_Click(object sender, RoutedEventArgs e)

{

myInstance.ResumeBookmark("mywait", this.textBox1.Text);

}

?

結果

?

?

?

?

?

轉載于:https://www.cnblogs.com/foundation/archive/2009/06/08/1498624.html

總結

以上是生活随笔為你收集整理的WF4B1 的有返回值的Activity,Bookmark,有返回值Bookmark的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。