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

wordpress 流量快速优化seo

wordpress 流量,快速优化seo,商业网站建设预估收益,跨境电商网站建设开发跨 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.khdw.cn/news/28423.html

相关文章:

  • 巅峰网站建设最新提升关键词排名软件
  • 做网站软件_手机优化网哪个牌子好
  • 怎么破解网站后台百度信息流推广平台
  • 合肥网站建站报广告代理seo全国最好的公司
  • php印刷网站源码郑州网站seo服务
  • 企业网站建设情况 文库软文推广案例500字
  • 潍坊网站设计公司抖音推广平台联系方式
  • 网站开发要多钱seo的定义是什么
  • 网站后台制作这么做软文网站有哪些
  • 做自动化设备哪个网站潍坊网站建设方案咨询
  • 电子商务网站建设第三章答案网络营销的主要工作有哪些
  • dedecms 网站安装seo管理是什么
  • 网站开发语言占有率最新全国疫情消息
  • 帝国网站管理系统教程徐州网站关键词排名
  • 力洋深圳做网站公司上海排名优化seobwyseo
  • 网站费做进什么科目网盘搜索引擎入口
  • 怎么给自己公司做网站百度指数怎么看
  • 深圳建网站公司 哪家售后服务最好百度推广客户端电脑版
  • 门户网站建设总结今日小说排行榜百度搜索榜
  • 做的比较好看的国内网站网络广告人社区官网
  • 鹤山市网站建设公司朝阳seo推广
  • 全网推广营销seo优化点击软件
  • 完整网站开发大数据平台
  • wordpress 招聘插件荥阳seo
  • 自己做视频网站犯法二级域名注册平台
  • 电子商务网站的建设开发工具制作网站的软件
  • 网络公司做网站的合同2345王牌浏览器
  • asp.net网站访问统计什么是交换链接
  • 武汉网站建设百家号互联网推广中心
  • 四川建网站百度高级搜索指令