Проблема с Синтаксисом делегата в C#

Вы можете получить всю информацию, связанную с отображением, используя класс Display Metrics http://developer.android.com/reference/android/util/DisplayMetrics.html

, который вам потребуется

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

После этого вся необходимая информация будет присутствовать в вашем объекте метрики.

Другой вариант - позвонить

getActivity().getWindowManager().getDefaultDisplay().getWidth()
getActivity().getWindowManager().getDefaultDisplay().getHeight()

.

6
задан Henrik P. Hessel 25 May 2009 в 09:38
поделиться

2 ответа

Во многих случаях, подобных этому, самый простой подход - использовать «захваченную переменную» для передачи состояния между потоками; это означает, что вы можете сохранить логику локализованной:

public void UpdateTestBox(string newText)
{
    BeginInvoke((MethodInvoker) delegate {
        tb_output.Text = newText;
    });        
}

Вышеупомянутое особенно полезно, если мы ожидаем, что он будет вызываться в рабочем потоке (так что небольшая проверка точки InvokeRequired ) - обратите внимание, что это безопасно как для пользовательского интерфейса, так и для рабочего потока, и позволяет нам передавать столько или меньше состояния между потоками.

9
ответ дан 8 December 2019 в 18:41
поделиться

For simple delegates like this you can use the Action delegate (link to msdn) from the framework.

public void UpdateTestBox(string newText)
{
    if (InvokeRequired)
    {
        BeginInvoke(new Action<string>(UpdateTestBox), new object[] { newText });
        return;
    }
    tb_output.Text = newText;
}

That way you do not need to maintain your own delegate declarations.

4
ответ дан 8 December 2019 в 18:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: