当前位置: 首页 > news >正文

怎样在政府采购网站做备案网络建站优化科技

怎样在政府采购网站做备案,网络建站优化科技,寿光市住房和城乡建设局网站,为什么大网站的百度快照更新速度慢还排第一跨 ABI 的简单信号 如果无需连同事件传递任何形参或实参,则可以定义自己的简单 Windows 运行时委托类型。 以下示例展示 Thermometer 运行时类的更简易版本。 它声明名为 SignalDelegate 的委托类型,然后使用该类型来引发信号类型事件,而不是…
跨 ABI 的简单信号

如果无需连同事件传递任何形参或实参,则可以定义自己的简单 Windows 运行时委托类型。 以下示例展示 Thermometer 运行时类的更简易版本。 它声明名为 SignalDelegate 的委托类型,然后使用该类型来引发信号类型事件,而不是具有参数的事件。

// ThermometerWRC.idl
namespace ThermometerWRC
{delegate void SignalDelegate();runtimeclass Thermometer{Thermometer();event ThermometerWRC.SignalDelegate SignalTemperatureIsBelowFreezing;void AdjustTemperature(Single value);};
}// Thermometer.h
...
namespace winrt::ThermometerWRC::implementation
{struct Thermometer : ThermometerT<Thermometer>{...winrt::event_token SignalTemperatureIsBelowFreezing(ThermometerWRC::SignalDelegate const& handler);void SignalTemperatureIsBelowFreezing(winrt::event_token const& token);void AdjustTemperature(float deltaFahrenheit);private:winrt::event<ThermometerWRC::SignalDelegate> m_signal;float m_temperatureFahrenheit{ 0.f };};
}// Thermometer.cpp
...
namespace winrt::ThermometerWRC::implementation
{winrt::event_token Thermometer::SignalTemperatureIsBelowFreezing(ThermometerWRC::SignalDelegate const& handler){return m_signal.add(handler);}void Thermometer::SignalTemperatureIsBelowFreezing(winrt::event_token const& token){m_signal.remove(token);}void Thermometer::AdjustTemperature(float deltaFahrenheit){m_temperatureFahrenheit += deltaFahrenheit;if (m_temperatureFahrenheit < 32.f){m_signal();}}
}// App.cpp
struct App : implements<App, IFrameworkViewSource, IFrameworkView>
{ThermometerWRC::Thermometer m_thermometer;winrt::event_token m_eventToken;...void Initialize(CoreApplicationView const &){m_eventToken = m_thermometer.SignalTemperatureIsBelowFreezing([] { /* ... */ });}...void Uninitialize(){m_thermometer.SignalTemperatureIsBelowFreezing(m_eventToken);}...void OnPointerPressed(IInspectable const &, PointerEventArgs const & args){m_thermometer.AdjustTemperature(-1.f);...}...
};
项目中的参数化委托、简单信号和回调

如果所需事件是 Visual Studio 项目内部的(未跨二进制文件),而在内部这些事件不限于 Windows 运行时类型,则仍可使用 winrt::event<Delegate> 类模板。 请直接使用 winrt::delegate 而不是实际的 Windows 运行时委托类型,因为 winrt::delegate 也支持非 Windows 运行时参数。

以下示例先显示不采用任何参数的委托签名(本质上即简单信号),然后显示采用字符串的委托签名。

如果所需事件是 Visual Studio 项目内部的(未跨二进制文件),而在内部这些事件不限于 Windows 运行时类型,则仍可使用 winrt::event<Delegate> 类模板。 请直接使用 winrt::delegate 而不是实际的 Windows 运行时委托类型,因为 winrt::delegate 也支持非 Windows 运行时参数。

以下示例先显示不采用任何参数的委托签名(本质上即简单信号),然后显示采用字符串的委托签名。

winrt::event<winrt::delegate<>> signal;
signal.add([] { std::wcout << L"Hello, "; });
signal.add([] { std::wcout << L"World!" << std::endl; });
signal();winrt::event<winrt::delegate<std::wstring>> log;
log.add([](std::wstring const& message) { std::wcout << message.c_str() << std::endl; });
log.add([](std::wstring const& message) { Persist(message); });
log(L"Hello, World!");

注意如何向事件添加尽可能多的订阅委托。 但会产生一些与事件相关的开销。 如果只需仅具有一个订阅委托的简单回调,则你可以独立使用 winrt::delegate<…T>。

winrt::delegate<> signalCallback;
signalCallback = [] { std::wcout << L"Hello, World!" << std::endl; };
signalCallback();winrt::delegate<std::wstring> logCallback;
logCallback = [](std::wstring const& message) { std::wcout << message.c_str() << std::endl; }f;
logCallback(L"Hello, World!");
 可延迟事件

Windows 运行时中的常见模式是可延迟事件。 事件处理程序通过调用事件参数的 GetDeferral 方法采用延迟。 这样做会向事件源指示应推迟事件后活动,直到延迟完成。 这允许事件处理程序执行异步操作以响应事件。

winrt::deferrable_event_args 结构模板是一个帮助程序类,用于实现(生成)Windows 运行时延迟模式。 下面是一个示例。

// Widget.idl
namespace Sample
{runtimeclass WidgetStartingEventArgs{Windows.Foundation.Deferral GetDeferral();Boolean Cancel;};runtimeclass Widget{event Windows.Foundation.TypedEventHandler<Widget, WidgetStartingEventArgs> Starting;};
}// Widget.h
namespace winrt::Sample::implementation
{struct Widget : WidgetT<Widget>{Widget() = default;event_token Starting(Windows::Foundation::TypedEventHandler<Sample::Widget, Sample::WidgetStartingEventArgs> const& handler){return m_starting.add(handler);}void Starting(event_token const& token) noexcept{m_starting.remove(token);}private:event<Windows::Foundation::TypedEventHandler<Sample::Widget, Sample::WidgetStartingEventArgs>> m_starting;};struct WidgetStartingEventArgs : WidgetStartingEventArgsT<WidgetStartingEventArgs>,deferrable_event_args<WidgetStartingEventArgs>//                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^{bool Cancel() const noexcept { return m_cancel; }void Cancel(bool value) noexcept { m_cancel = value; }bool m_cancel = false;};
}

下面是事件接收方使用可延迟事件模式的方式。

// EventRecipient.h
widget.Starting([](auto sender, auto args) -> fire_and_forget
{auto deferral = args.GetDeferral();if (!co_await CanWidgetStartAsync(sender)){// Do not allow the widget to start.args.Cancel(true);}deferral.Complete();
});

 作为事件源的实现者(生成者),从 winrt::deferrable_event_args 派生事件 args 类。 deferrable_event_args<T> 为你实现 T::GetDeferral。 它还公开新的帮助程序方法 deferrable_event_args::wait_for_deferrals,该方法在所有未完成的延迟完成后完成(如果没有延迟要执行,则会立即完成)。

// Widget.h
IAsyncOperation<bool> TryStartWidget(Widget const& widget)
{auto args = make_self<WidgetStartingEventArgs>();// Raise the event to let people know that the widget is starting// and give them a chance to prevent it.m_starting(widget, *args);// Wait for deferrals to complete.co_await args->wait_for_deferrals();// Use the results.bool started = false;if (!args->Cancel()){widget.InsertBattery();widget.FlipPowerSwitch();started = true;}co_return started;
}
http://www.zhongyajixie.com/news/24833.html

相关文章:

  • 谁可以做网站2021谷歌搜索入口
  • 南京做征信服务的公司网站抖音seo排名
  • 做网站需要学习哪些电商seo优化是什么
  • 外贸购物网站开发网络营销成功的案例
  • 一个动态网站多少钱互联网公司网站模板
  • 广告优化师工资一般多少长沙有实力的关键词优化价格
  • 五百丁简历模板官方网站关键词搜索排名公司
  • 微网站建设渠道江门关键词优化公司
  • 佛山外贸网站建设价位推广计划怎么做推广是什么
  • 曹县有没有做网站最新新闻热点事件
  • 重庆做学校网站公司百度实时热搜榜
  • 美食烹饪网站策划书网店培训骗局
  • 赤峰建设银行网站谷歌浏览器app下载
  • 中国专门做统计网站怎么推广软件
  • 手机网站有什么不同电子商务网站建设教程
  • 网站收录量下降百度基木鱼建站
  • 杭州模板网站建设系统网站如何宣传推广
  • 哪几个网站做acm题目微信推广多少钱一次
  • 新洲区城乡建设局网站新手学seo
  • 政府网站建设情况调查百度广告代理商
  • 高端营销型网站万网域名管理入口
  • 建设商业门户网站的重要项目网站
  • 网站环境搭建好后怎么做网站品牌推广的方式
  • saas系统多少钱郑州网站运营实力乐云seo
  • 做建材网站怎么做制作网页的流程步骤
  • 个人备案做企业网站seo网站优化服务商
  • php网站开发软件怎么写软文推广
  • 理县网站建设中国十大软件外包公司排名
  • 做网站需要什么技术吉安seo
  • 六安手机网站建设百度官方app免费下载