Я пишу асинхронный модульный тест, и я хотел бы связать его вместе с помощью lambdas (или анонимных методов?), Поэтому мне не нужно определять именованные функции для продолжений.Как написать следующие обратные вызовы в синтаксисе C# ambda?
Я прочитал несколько постов на лямбды, но most из these сделки с для каждого конструктов стиль, который я не заинтересован в
Я хотел бы сделать что-то вроде следующего (взято из 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().
Ниже мой код без лямбды:
[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();
}
}
...
Опять же, вопрос:
Как я строка вышеприведенные вместе, используя лямбды (? Или анонимные методы), так что я не должны определить именованные функции для продолжений?
Пожалуйста, объясните новый синтаксис как можно больше, поскольку я все еще пытаюсь обернуть голову вокруг концепции.
Большое спасибо!
Я могу быть совершенно глупым и, может быть, я не понял вопроса (это выглядит тяжело), но почему бы вам не подписаться на таймер. –