Task

合集下载

C# TASK用法

C# TASK用法
static void TasksEnded(Task[] tasks) {
Console.WriteLine("所有任务已完成!"); }
以上代码输出为:
任务开始…… 任务开始…… 任务开始…… 所有任务已完成(取消)!
本建议演示了 Task(任务)和 TaskFactory(任务工厂)的使用方法。Task 甚至进一步优 化了后台线程池的调度,加快了线程的处理速度。在 FCL4.0 时代,使用多线程,我们理应 更多地使用 Task。
static void TaskEndedByCatch(Task<int> task) {
Console.WriteLine("任务完成,完成时候的状态为:"); Console.WriteLine("IsCanceled={0}\tIsCompleted={1}\tIsFaulted={2}", task.IsCanceled, task.IsCompleted, task.IsFaulted); try {
在任务开始后大概 3 秒钟的时候按下键盘,会得到如下的输出:
任务开始……
任务完成,完成时候的状态为:
IsCanceled=False
IsCompleted=True
任务的返回值为:3
IsFaulted=False
你也许会奇怪,我们的任务是通过 Cancel 的方式处理,为什么完成的状态 IsCanceled 那一 栏还是 False。这是因为在工作任务中,我们 对于 IsCancellationRequested 进行了业务 逻辑上的处理,并没有通过 ThrowIfCancellationRequested 方法 进行处理。如果采用后者 的方式,如下:

多线程thread和Task的用法以及注意事项

多线程thread和Task的用法以及注意事项

多线程thread和Task的⽤法以及注意事项并⾏多核线程:Task⾸先引⽤System.Threading;1:⽤静态⽅法:Task.Factory.StartNew()来创建了⼀个最简单的Task:Task.Factory.StartNew(() =>{Console.WriteLine("Hello World");});2:多种⽅法创建:using System.Threading.Tasks;namespace Listing_02{class Listing_02{static void Main(string[] args){ Task t = new Task(new Action(write)); Task t = new Task(delegate { Console.WriteLine("a"); }); Task t = new Task(() => { Console.WriteLine("a"); }); Task t = new Task(() => { write(); }); Task t = new Task(delegate(){ write(); }); t.Start(); Console.ReadLine(); } private static void write() { Console.WriteLine("aynm"); }}}3:为创建的Task传⼊参数using System;using System.Threading.Tasks;namespace Listing_04{class Listing_04{static void Main(string[] args){string[] messages = { "First task", "Second task","Third task", "Fourth task" };foreach (string msg in messages){Task myTask = new Task(obj => printMessage((string)obj), msg);myTask.Start();}// wait for input before exitingConsole.WriteLine("Main method complete. Press enter to finish.");Console.ReadLine();}static void printMessage(string message){Console.WriteLine("Message: {0}", message);}}}注意:我们在传⼊参数后,必须把参数转换为它们原来的类型,然后再去调⽤相应的⽅法。

C#线程学习笔记七:Task详细用法

C#线程学习笔记七:Task详细用法

C#线程学习笔记七:Task详细⽤法⼀、Task类简介Task类是在.NET Framework 4.0中提供的新功能,主要⽤于异步操作的控制。

它⽐Thread和ThreadPool提供了更为强⼤的功能,并且更⽅便使⽤。

Task和Task<TResult>类:前者接收的是Action委托类型;后者接收的是Func<TResult>委托类型。

任务Task和线程Thread的区别:1、任务是架构在线程之上。

也就是说任务最终还是要抛给线程去执⾏,它们都是在同⼀命名空间System.Threading下。

2、任务跟线程并不是⼀对⼀的关系。

⽐如说开启10个任务并不⼀定会开启10个线程,因为使⽤Task开启新任务时,是从线程池中调⽤线程,这点与ThreadPool.QueueUserWorkItem类似。

⼆、Task的创建2.1创建⽅式1:调⽤构造函数class Program{static void Main(string[] args){#region⼯作者线程:使⽤任务实现异步ThreadPool.SetMaxThreads(1000, 1000);PrintMessage("Main thread start.");//调⽤构造函数创建Task对象Task<int> task = new Task<int>(n => AsyncMethod((int)n), 10);//启动任务task.Start();//等待任务完成task.Wait();Console.WriteLine("The method result is: " + task.Result);Console.ReadLine();#endregion}///<summary>///打印线程池信息///</summary>///<param name="data"></param>private static void PrintMessage(string data){//获得线程池中可⽤的⼯作者线程数量及I/O线程数量ThreadPool.GetAvailableThreads(out int workThreadNumber, out int ioThreadNumber);Console.WriteLine("{0}\n CurrentThreadId is:{1}\n CurrentThread is background:{2}\n WorkerThreadNumber is:{3}\n IOThreadNumbers is:{4}\n",data,Thread.CurrentThread.ManagedThreadId,Thread.CurrentThread.IsBackground.ToString(),workThreadNumber.ToString(),ioThreadNumber.ToString());}///<summary>///异步⽅法///</summary>///<param name="n"></param>///<returns></returns>private static int AsyncMethod(int n){Thread.Sleep(1000);PrintMessage("Asynchoronous method.");int sum = 0;for (int i = 1; i < n; i++){//运算溢出检查checked{sum += i;}}return sum;}}View Code2.2创建⽅式2:任务⼯⼚class Program{static void Main(string[] args){#region⼯作者线程:使⽤任务⼯⼚实现异步////⽆参⽆返回值//ThreadPool.SetMaxThreads(1000, 1000);//Task.Factory.StartNew(() => PrintMessage("Main thread."));//Console.Read();//有参有返回值ThreadPool.SetMaxThreads(1000, 1000);PrintMessage("Main thread start.");var task = Task.Factory.StartNew(n => AsyncMethod((int)n), 10);//等待任务完成task.Wait();Console.WriteLine("The method result is: " + task.Result);Console.ReadLine();#endregion}///<summary>///打印线程池信息///</summary>///<param name="data"></param>private static void PrintMessage(string data){//获得线程池中可⽤的⼯作者线程数量及I/O线程数量ThreadPool.GetAvailableThreads(out int workThreadNumber, out int ioThreadNumber);Console.WriteLine("{0}\n CurrentThreadId is:{1}\n CurrentThread is background:{2}\n WorkerThreadNumber is:{3}\n IOThreadNumbers is:{4}\n", data,Thread.CurrentThread.ManagedThreadId,Thread.CurrentThread.IsBackground.ToString(),workThreadNumber.ToString(),ioThreadNumber.ToString());}///<summary>///异步⽅法///</summary>///<param name="n"></param>///<returns></returns>private static int AsyncMethod(int n){Thread.Sleep(1000);PrintMessage("Asynchoronous method.");int sum = 0;for (int i = 1; i < n; i++){//运算溢出检查checked{sum += i;}}return sum;}}View Code2.3创建⽅式3:Run⽅法class Program{static void Main(string[] args){#region⼯作者线程:使⽤Task.Run实现异步ThreadPool.SetMaxThreads(1000, 1000);PrintMessage("Main thread start.");var task = Task.Run(() => AsyncMethod(10));//等待任务完成task.Wait();Console.WriteLine("The method result is: " + task.Result);Console.ReadLine();#endregion}///<summary>///打印线程池信息///</summary>///<param name="data"></param>private static void PrintMessage(string data){//获得线程池中可⽤的⼯作者线程数量及I/O线程数量ThreadPool.GetAvailableThreads(out int workThreadNumber, out int ioThreadNumber);Console.WriteLine("{0}\n CurrentThreadId is:{1}\n CurrentThread is background:{2}\n WorkerThreadNumber is:{3}\n IOThreadNumbers is:{4}\n", data,Thread.CurrentThread.ManagedThreadId,Thread.CurrentThread.IsBackground.ToString(),workThreadNumber.ToString(),ioThreadNumber.ToString());}///<summary>///异步⽅法///</summary>///<param name="n"></param>///<returns></returns>private static int AsyncMethod(int n){Thread.Sleep(1000);PrintMessage("Asynchoronous method.");int sum = 0;for (int i = 1; i < n; i++){//运算溢出检查checked{sum += i;}}return sum;}}View Code三、Task的简略⽣命周期可通过Status属性获取。

Task使用详细[基础操作,异步原则,异步函数,异步模式]

Task使用详细[基础操作,异步原则,异步函数,异步模式]

Task使⽤详细[基础操作,异步原则,异步函数,异步模式]线程是创建并发的底层⼯具,对于开发者⽽⾔,想实现细粒度并发具有⼀定的局限性,⽐如将⼩的并发组合成⼤的并发,还有性能⽅⾯的影响。

Task可以很好的解决这些问题,Task是⼀个更⾼级的抽象概念,代表⼀个并发操作,但不⼀定依赖线程完成。

Task从Framework4.0开始引⼊,Framework4.5⼜添加了⼀些功能,⽐如Task.Run(),async/await关键字等,在.NET Framework4.5之后,基于任务的异步处理已经成为主流模式, (Task-based Asynchronous Pattern,TAP)基于任务的异步模式。

在使⽤异步函数之前,先看下Task的基本操作。

⼀. Task 基本操作1.1 Task 启动⽅式Task.Run(()=>Console.WriteLine("Hello Task"));Task.Factory.StartNew(()=>Console.WriteLine("Hello Task"));Task.Run是Task.Factory.StartNew的快捷⽅式。

启动的都是后台线程,并且默认都是线程池的线程Task.Run(() =>{Console.WriteLine($"TaskRun IsBackGround:{CurrentThread.IsBackground}, IsThreadPool:{CurrentThread.IsThreadPoolThread}");});Task.Factory.StartNew(() =>{Console.WriteLine($"TaskFactoryStartNew IsBackGround:{CurrentThread.IsBackground}, IsThreadPool:{CurrentThread.IsThreadPoolThread}");});如果Task是长任务,可以添加TaskCreationOptions.LongRunning参数,使任务不运⾏在线程池上,有利于提升性能。

高中英语单词天天记task素材

高中英语单词天天记task素材

· task· n. [tɑːsk] ( tasks )·· 双解释义· C 工作,任务,差事 a piece of work (that must be) done, especially if hard or unpleasant; duty· 基本要点•1.task的意思是“工作,任务,差事”,指规定的必须完成的事情,常用来指较困难、紧张、沉重或枯燥的工作,可指分配的工作,也可指自愿承担的工作,是可数名词。

2.task后可接“of+v-ing”结构作定语。

•· 词汇搭配••abandon a task 放弃一项工作•accomplish a task 完成任务•assign a task 分配任务•carry out a task 执行任务•complete a task 完成任务•do a task 执行任务•give a task 分配任务•set a task 分配任务•shoulder a task 承担任务•take on a task 从事工作•undertake a task 负责工作••delicate task 关系微妙〔难处理〕的事情,棘手的任务•difficult task 困难的任务•fruitless task 徒劳无果的工作•hopeless task 徒劳无望的工作•pleasant task 合意的差事•prime task 主要工作•thankless task 费力不讨好的任务•unpleasant task 不合意的差事•unwelcome task 讨厌的工作•uphill task 费力的工作•urgent task 紧急任务•welcome task 令人愉快的工作••combat task 战斗任务••task equipment 专用设备•task force 特遣部队,特别工作组•task master 工头,监工•task suspension 任务暂停••at one's task 在工作•in such a task 在这样一项工作中•bring sb to task for 为…责备某人•call sb to task for 为…责备某人•take sb to task for 为…责备某人•bend one's back to task until one's dying day 鞠躬尽瘁,死而后已•· 常用短语•take to task(为失误等而)责备(某人) speak severely to sb for a fault or failure▲take sb to taskMy father took me to task about my dirty hands.我爸爸责备我,说我的手很脏。

C#Task详解

C#Task详解

C#Task详解1、Task的优势ThreadPool相⽐Thread来说具备了很多优势,但是ThreadPool却⼜存在⼀些使⽤上的不⽅便。

⽐如:ThreadPool不⽀持线程的取消、完成、失败通知等交互性操作;ThreadPool不⽀持线程执⾏的先后次序;以往,如果开发者要实现上述功能,需要完成很多额外的⼯作,现在,FCL中提供了⼀个功能更强⼤的概念:Task。

Task在线程池的基础上进⾏了优化,并提供了更多的API。

在FCL4.0中,如果我们要编写多线程程序,Task显然已经优于传统的⽅式。

以下是⼀个简单的任务⽰例:static void Main(string[] args){Task t = new Task(() =>{Console.WriteLine("任务开始⼯作……");//模拟⼯作过程Thread.Sleep(5000);});t.Start();t.ContinueWith((task) =>{Console.WriteLine("任务完成,完成时候的状态为:");Console.WriteLine("IsCanceled={0}\tIsCompleted={1}\tIsFaulted={2}",task.IsCanceled, task.IsCompleted, task.IsFaulted);});Console.ReadKey();}2、Task的⽤法2.1 创建任务2.1.1 ⽆返回值的⽅式⽅式1:var t1 = new Task(() => TaskMethod("Task 1"));t1.Start();Task.WaitAll(t1);//等待所有任务结束任务的状态:Start之前为Created,之后为WaitingToRun⽅式2:Task.Run(() => TaskMethod("Task 2"));⽅式3:Task.Factory.StartNew(() => TaskMethod("Task 3")); //直接异步的⽅法//或者var t3=Task.Factory.StartNew(() => TaskMethod("Task 3"));Task.WaitAll(t3);//等待所有任务结束任务的状态:Start之前为Running,之后为Runningstatic void Main(string[] args){var t1 = new Task(() => TaskMethod("Task 1"));var t2 = new Task(() => TaskMethod("Task 2"));t2.Start();t1.Start();Task.WaitAll(t1, t2);Task.Run(() => TaskMethod("Task 3"));Task.Factory.StartNew(() => TaskMethod("Task 4"));//标记为长时间运⾏任务,则任务不会使⽤线程池,⽽在单独的线程中运⾏。

task相关函数的功能和用法

task相关函数的功能和用法1.task_create (by HJ)·原型:task_t* task_create(void (*Function)(void*),void* Param,size_t StackSize,int Priority,const char* Name,task_flags_t flags );·参数:void (*Function)(void*)指向任务函数的入口即函数名。

void* Param提供给Function的入口参数,如果参数较多,可以组合成结够体,再提供此结构体的地址作为参数即可。

size_t StackSize任务所用的栈的大小。

int Priority创建任务的优先级。

const char* Name任务的名称,主要是用来标示任务队列里的不同任务。

task_flags_t flags关于任务的一些附加信息,一般定义为0,及标示为默认的行为具体如下表:·返回值:如果创建成功返回指向该结构体的指针,否则返回NULL。

·功能描述:此函数为创建一个具有给定优先级的任务。

·应用举例:#include < stdio.h >#include < stdlib.h >#include < ostime.h >#include < task.h >#define USER_PRIORITY 1#define USER_WS_SIZE 2048struct sig_params{semaphore_t *Ready;int Count;};void signal_task(void* p){struct sig_params* Params = (struct sig_params*)p;int j;for (j = 0; j < Params->Count; j++){semaphore_signal (Params->Ready);task_delay(ONE_SECOND);}}int main(){task_t* Task;struct sig_params params;Task = task_create (signal_task, &params,USER_WS_SIZE, USER_PRIORITY, "Signal", 0);if (Task == NULL){printf ("Error : create. Unable to create task\n");exit (EXIT_FAILURE);}}2.task_data (by HJ)·原型:void* task_data( task_t* Task );·参数:task_t* Task指向任务接构task_t的指针。

task,project 认识和建议


What is a project? Project (补充阅读+综合能力的 训练), 是引导学生进行的一种开 放式探究性的学习活动,把听、 说、读、写的训练从课堂内拓展 到课堂外。
(Advance with English Teacher’s Book)
What is a project?
a piece of planned work or activity which is completed over a period of time and intended to achieve a particular aim(Cambridge)
建议
关于task 关于project
关于task的建议
教学时间安排 2 课时
教学形式以活动为主
教学指导要突出重点 教学内容可二次处理
关于project的建议 •结合实际灵活处理
•不同学生不同要求
•合作学习共同提高 •重在过程讲究实效
关于project的处理 • 根据教材要求组织学生做 • 教师选择后布置给学生做 • 教师让学生自主选择后做
关于《牛津高中英语》 Task板块和Project板块的 认识、实践和建议
认识
What is a task? What is a project?
What is a task?
a piece of work to be done, esp. one done regularly, unwillingly or with difficulty(Cambridge)
建议
5. The teacher speaks English clearly 6. The teacher uses English for most of the lesson 7.The teacher encourages students to take risks with English (experiment with the language without fear of making mistakes)

C#Task任务详解及其使用方式

C#Task任务详解及其使⽤⽅式C#多线程编程笔记(4.3)-Task任务中实现取消选项1.Task类介绍:Task 类的表⽰单个操作不返回⼀个值,通常以异步⽅式执⾏。

Task 对象是⼀个的中⼼思想基于任务的异步模式⾸次引⼊.NET Framework 4 中。

因为由执⾏⼯作 Task 对象通常以异步⽅式执⾏在线程池线程上⽽不是以同步⽅式在主应⽤程序线程,您可以使⽤ Status 属性,以及IsCanceled, ,IsCompleted, ,和 IsFaulted 属性,以确定任务的状态。

⼤多数情况下,lambda 表达式⽤于指定的任务是执⾏的⼯作。

对于返回值的操作,您使⽤ Task 类。

任务Task和线程Thread的区别:1、任务是架构在线程之上的,也就是说任务最终还是要抛给线程去执⾏。

2、任务跟线程不是⼀对⼀的关系,⽐如开10个任务并不是说会开10个线程,这⼀点任务有点类似线程池,但是任务相⽐线程池有很⼩的开销和精确的控制。

Task和Thread⼀样,位于System.Threading命名空间下!⼀、创建TaskTask 类还提供了构造函数对任务进⾏初始化,但的未计划的执⾏。

出于性能原因, Task.Run 或 TaskFactory.StartNew(⼯⼚创建)⽅法是⽤于创建和计划计算的任务的⾸选的机制,但对于创建和计划必须分开的⽅案,您可以使⽤的构造函数(new⼀个出来),然后调⽤ Task.Start ⽅法来计划任务,以在稍后某个时间执⾏。

//第⼀种创建⽅式,直接实例化:必须⼿动去Startvar task1 = new Task(() =>{//TODO you code});task1.Start();//第⼆种创建⽅式,⼯⼚创建,直接执⾏var task2 = Task.Factory.StartNew(() =>{//TODO you code});⼆、Task的简略⽣命周期:⽅法名说明Created表⽰默认初始化任务,但是“⼯⼚创建的”实例直接跳过。

task的用法总结大全

task的用法总结大全想了解task的用法么?今天给大家带来了task的用法,希望能够帮助到大家,下面就和大家分享,来欣赏一下吧。

task的用法总结大全task的意思n. 工作,任务,作业,苦差事vt. 交给某人(任务),使过于劳累变形:过去式: tasked; 现在分词:tasking; 过去分词:tasked;task用法task可以用作名词task的意思是“工作,任务,差事”,指规定的必须完成的事情,常用来指较困难、紧张、沉重或枯燥的工作,可指分配的工作,也可指自愿承担的工作,是可数名词。

task后可接“of+ v -ing”结构作定语。

task用作名词的用法例句Its an arduous task.这是一项艰巨的任务。

It is an irksome task.那是件令人厌烦的工作。

Her work is a laborious task.她的工作很艰苦。

task用法例句1、They have a tendency to try to sidetrack you from your task. 他们总试图让你从你的任务中分心。

2、The first task was to fence the wood to exclude sheep.第一项任务就是把树林围起来不让羊进去。

3、Her critics say she has proved unequal to the task.批评她的人说事实证明她并不具备完成这项工作的能力。

词汇精选:task的用法和辨析一、详细释义:n.任务,工作,作业[C]例句:After continuous hard work, they at last completed the task.经过连续奋战,他们终于完成了任务。

例句:They havent finished the task yet.他们还没完成任务。

困难的工作,苦差事[C]例句:Why do you always pick on me to do such a difficult task ? 你为什么总是挑我做这种困难的工作?例句:She has the difficult task of pulling out all the weeds.她的苦差事是去除所有的杂草。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Unit 1 Getting along with othersTask Writing a letter to a friend●Teaching objectives:1.understand a conversation on a radio talk show2.discuss friendship and practise agreeing and disagreeing3.write a letter to a friend4.learn and practise language skills of listening, reading, speaking and writing.●Teaching focus and difficulties:1.writing down answers2.the way to show agreeing and disagreeing.3.writing a letter to a friend●Teaching methods:1. Listening, reading and thinking to get students to understand the text.2. Pair discussion and group discussion to get students to participate in the classroom activities.●Teaching aids:The multimedia●Teaching procedures:Skills building 1: Writing down the answers1. Lead-inYou are a reporter of your school newspaper and going to have a interview with your headmaster next week, what should you do?2. Turn to page 12 and find some guidelinesa. Questions: Prepare them in advance.b. Notes: Brief notes only, not whole sentences.Make the notes which you can understand later.Use contractions and abbreviations if possible.c. Tip: Be polite when you ask others to repeat.I beg your pardon? / Pardon me?Could you say that again?Could you repeat that, please?Did you say… or…?3. Listeninga. Discuss freely:Have you ever moved to a new town or neighbourhood?What did you do when you meet your new neighbours?What did you talk about when you met your new neighbours for the first time?How did you make friends with your new neighbours?b. Listen to the radio programme and make notesnotes(fill in the blanks)1. What things might worry you when you move to a new place?Hot to find my way around, __________ and make new friends2. What is one way to meet new neighbours?Visit ___________ with a small gift3. What are some things you should do when you meet a person for the first time?Be _______________ about myself; ask him/her questions about himself/herself; listen to _______________________4. If you want to meet people with similar interests to yours, what can you do?Join a local club or _______________5. What are some things you should do if you want to make true friends?Always __________________ ; listen to what they have to say; ______________ myself and my feelingsStep 1 : Calling Teen Talk for advice1. Brainstorming:What do you do when you have a personal problem?Would you talk to your parents or your friends and ask them for advice? Have you ever called a radio programme for advice?2. Read the leaflet about Teen Talk and do the exercise in Part A3. Keys to Part ATeen talk1 You can read Teen Talk by:e-mail / phone / website.2 Teen Talk never closes. True False3 Teenagers’ problems wil l be reported to parents Ture False4 Teen Talk listen to _________________5 Teen Talk offers _______PhoneTrueFalseteenagers’ problemsadviceSkills building 2: agreeing and disagreeing1. Lead-inWhat do you often do with your friends?Have you ever write letters to your friends?It’s a waste of time to write to your friends every day, don’t you think so?2.a. AgreeingI agree with you on/that…I am of the same opinion (as…).Exactly.That’s a good point.That’s how I feel (about…) too.That’s right.You’ve got a point.Yes. And another reason is that…b. DisagreeingI don’t agree. What about…?I’m not sure that’s true.I see things slightly differently.On the other hand, …Perhaps you are mistaken.Really? I don’t think that…I take your point, but…That’s true, but…c. Tips:If you disagree with someone you should express your opinions politely.Others will take your opinions more seriously if you state them calmly and politely.3.Group work:express your opinions on the statements on page 14 by stating whether you agree or disagree, using the expressions just learned.Step 2: discussing friendship with others1. Look at the table of part A on page 15Have a discussion on friendship and asks your classmates at least three questions for their opinions on friendship.Note the responses in the table.2.Discussion (pair work)Discuss the following statements on friendship and decide whether you agree or disagree with them.Friendship is an important part of my life.A good friend must be honest, kind and have a sense of humour.One or two good friends are better than 100 acquaintances.Skills building 3: checking your work1.lead-inWhat should we check for?Read the points on page 16 and find the answers.2. In particular, we should check for:Facts: make sure the facts are accurate.Grammar: Check that you have used the correct tenses, parts of speech, sentence structures, etc. Make sure the verb agrees with the subject.Handwriting: Make sure your handwriting is clear.Punctuation: Check that all punctuation marks are used correctly and that none are missing.Vocabulary: Check that you have used the right words.Spelling: Look out for spelling mistakes.Style(formal/informal): Make sure that the choice of vocabulary and sentence structure matches the style of writing.3. Your friend Rebecca wrote about her twin brother in her diary. She asked you to check it for mistakes. There is one mistake in each line.15 Apirl Today, I found out something about my brother could get himinto a lot of trouble. I’m not sure if to tell Mum and Dad.Although William and I are almost 18, but Mum and Dad are stillquite strict to us. Recently, William has begun wearing some strangeclothes. and he looks quite different from before.The other day I saw him smoked in his room, with two of his friends,Jack and Sean. I know Mum and Dad would be extreme angry me if theyknew that I had kept this secret for them. Maybe I should tell them, so theywon’t blame me for keep a secret.However, I don’t think William will live at home for much longer as hesplanning to go to university soon, His grades are still good. It seemsthat his behaviour hasn’t hurt he studies. Maybe I should just keepmy month shut. What should I do?Step 3 Writing a letter to your friend1.Write a letter to a friend about what his or her friendship means to you. using information gathered in Step 1 and2.2.Group work: each member of the group contributes something to the planning of the outline of the letter.3. Write the letter based on the outline in Part A on page 17.Consider the suggestions carefullyyour feelings about friendshipthe qualities of a good friendyour feelings about best friendswhat makes a good friendship last4. PresentationLet’s invite several groups to read their letters to the classStep 4 HomeworkFinish any additional exercisesPreview the Project。

相关文档
最新文档