我正在編寫一個異步單元測試,我想用lambdas(或匿名方法?)將它們串在一起,所以我不必爲延續定義命名函數。如何在C#lambda語法中編寫以下回調延續?
我已經lambda表達式讀的幾個職位,但these的most處理每個樣式結構,我沒興趣
我願做類似如下(從here拍攝):
using Microsoft.Silverlight.Testing;
using Microsoft.VisualStudio.TestTools.UnitTesting;
{
[TestClass]
public class Test2 : SilverlightTest
{
[TestMethod]
[Asynchronous]
public void TestAsync1()
{
var eventRaised = false;
var result = false;
var timer = new System.Windows.Threading.DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(2);
timer.Tick += (object sender, EventArgs e) =>
{
timer.Stop();
// Simulate an expected result
result = true;
// Mark the event has being raised
eventRaised = true;
};
// Start timer
EnqueueCallback(() => timer.Start());
// Wait until event is raised
EnqueueConditional(() => eventRaised);
EnqueueCallback(() =>
{
// Additional tasks can be added here
Assert.IsTrue(result);
});
EnqueueTestComplete();
}
}
}
但我想我不需要EnqueueCallback()的東西。
以下是我的代碼,而lambda表達式:
[TestClass]
public class IdentityEditDatabaseTest : WorkItemTest
{
[TestMethod, Asynchronous] public void testNullInsert()
{
wipeTestData(testNullInsertContinue1);
}
private void testNullInsertContinue1(String errorString)
{
IdentityProperties properties = new IdentityProperties(getContext());
properties.setUserName(DATABASE_TEST);
postUserEdit(properties, testNullInsertContinue2);
}
private void testNullInsertContinue2(String errorString)
{
Assert.assertTrue(errorString == null);
wipeTestData(testNullInsertContinue3);
}
private void testNullInsertContinue3(String errorString)
{
TestComplete();
}
}
...
同樣,問題是:
我如何串用上面在一起的lambda(?或匿名方法),所以我不知道必須爲繼續定義命名函數?
請儘可能地解釋新的語法,因爲我仍然試圖圍繞這個概念進行思考。
非常感謝!
我可以是完全愚蠢的,也許我不明白這個問題(它看起來很難),但你爲什麼不訂閱timer.Tick事件? –